● テーブル、リスト形式の表、クロス集計表、カラム、ロウ、フィールド、レコード、セル、アイテム、という用語について
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
目次
・はじめに
・テーブル (=「動的な表」)と実表と仮想表
・リスト形式の表、データベース形式の表、明細表 (=「動的な表」)
・クロス集計表、マトリクス表 (=「静的な表」)
・カラム(column)、フィールド、列
・ロウ(row)、行
・レコード(Record)
・フィールド02(field)
・セル
・アイテム
※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。
・はじめに
ここでは データベース用語である、「テーブル、カラム、ロウ、フィールド、レコード」、と、Excel用語である「セル、アイテム」、について、少しお話させて頂きたいと思います。
これらの用語は「データベースソフト(AccessやSQL Server、MySQLなど)」と「Excel」のあいだではごっちゃに使われているのですが、明確に区別するのも難しいので(特にExcel側で)、「全体的にはこんな感じ」というところをご説明できたらなと思います。
ではまず、先にお伝えしておきます。
当サイトでは、データベースソフトであっても、1マスのことを便宜上、「セル」と呼ぶことにします。(後述しますが、)「フィールド」とは呼ばないことにします。
また、「フィールド」は「=列」「=カラム」という意味で使います。
(1マス=「セル」のことを「フィールド」と呼んでしまうと、データベースソフトとExcelとを連携させたい場合に、理解しづらくなってしまうためそうします。それにもともと Excelは「フィールド」を1マスとしてではなく「=列」「=カラム」ととらえているため、それもあって、セルのことをフィールドとは呼ばないことにします。)
・テーブル (=「動的な表」)と実表と仮想表
「テーブル」は、データ管理の基礎としては「表」(実表)のことをさします。
Excelではシートに相当したり、シートの中に作ったそれぞれの表のことをさしますが、そのなかでも特に、「リスト形式の表」「データベース形式の表」のことを指します。(次項の「・リスト形式の表、データベース形式の表、明細表」の表のことです。)
下図のような感じです。
例えば後述のクロス集計表のことは「クロス集計表」と呼んで「テーブル」とは明確に区別することが多いです。(広義では・・・というか、本来はクロス集計表も「テーブル」の一種ではあるのですが・・・。)
クロス集計表のことは「テーブル」とは呼ばないことが多いです。
クロス集計表は「クロス集計表」です。
なお、テーブルとしてではなく「表全体として」を考えた場合は、主に、このリスト形式の表とクロス集計表の2種類があります・・・という風に当サイトではこじつけしてしまっています。そのほうがわかりやすいと思うので。
とりあえず、「表」にはその2種類がある、ということだけ覚えておけばいいのですが、逆に、その2種類を明確に区別することこそが、「データ管理のムリ・ムダ・ムラ」を「100倍減らす」ための最初の最初、となります。
ですので、是非、この「リスト形式の表」と「クロス集計表」の2種類の表のことを、、「それぞれが違う表なんだ!!」、、と意識してみてください。
(「リスト形式の表」=「動的な表」、「クロス集計表」=「静的な表」、です。)
なお、当サイトは、この「テーブル」と次項の「・リスト形式の表、データベース形式の表、明細表」のことを「動的な表」とも呼んでいます。
並べ替えができたり、「ピボットテーブル」や「集計」、「フィルタ」「フィルタオプション」といった機能で、もとの形から色々に変形させることができるからです。
つまり、動的に「変形←→戻し」を繰り返すことができるからです。
あと・・・、データ管理の世界標準の世界では、「SQL」というものを用いた「仮想表」というものがあります。「クエリ」とか「ビュー」といった呼び方をします。
「仮想表」は、実データから何らかの条件で抽出した、これまた、「リスト形式の表」のことです。つまり、「仮想表」も「動的な表」のひとつです。(もちろん「実表」も。)
すでに手入力してある実表(=実データ)から、何らかの条件で絞り込んで表示させている表なので、「仮想表」などと呼んだりすることがあります。
Excelで言いますと、「オートフィルタ」や「フィルタオプション」などで、何らかの条件で絞り込んだリスト形式の表が、ちょうどそんな感じです。絞り込まれた結果の状態の表です。これも「仮想表」の一種と呼んでいいと思います。
このとき、その仮想表(=クエリ、ビュー)の対義語のような意味合いで、実際に手入力して作った「実データ(実表)」のことを「テーブル」と呼ぶことも多いです。(再度Excelに例えるとフィルタのいっさいかかってない全件表示されたものが「実データ」「生データ」「テーブル」「実表」という感じです。)
簡単にまとめると以下のような感じです。
▼「実表・実データ・テーブル」= 実際に手で入力したリスト形式の表そのもののこと。何の条件も設定されていない生データなので、入力されたすべてのデータが見えている。
▼「仮想表・クエリ・ビュー」= 実表から何らかの条件で絞り込んだリスト形式の表のこと。絞り込んであるので当然、見えていない隠されたデータもある。(複数の表と表が紐付けされている場合も多いです。ExcelのVLOOKUP関数などのワークシート関数を使ったときのように。)
▼ 見た目的には両方とも「リスト形式の表(=動的な表)」の姿をしています。違いは表の中の「データ=値」が手打ちしてあるものなのかそうじゃないのかだけ。
※注
多くのデータベースソフトでは、仮想表経由で実表にデータを入力できないのですが(=「仮想表と実表は別物」というイメージなんですが)、Microsoft Accessの仮想表機能である「クエリ」では、基本、仮想表と実表がリンクされているので、仮想表側でデータの入力ができるようになっています。そのため、仮想表と実表が同じに見えてしまう錯覚を起こすかもしれません。ただ、そのおかげで、「他のソフトよりも開発工数が激減する」というメリットがあります。Accessの「クエリ」では、クエリ側(仮想表側)で何らかの値を入力すると、実表にリンクしているためにそのまま実表側の該当箇所に値がそのまま放り込まれます。(あえて入力させないようにもできます。リレーションの組み方によっては入力が自動禁止されることもあります。)
パーソナルな事務的なデータベース開発で、Accessがなぜ開発効率がいいのかというと、この「クエリからも直接テーブルに入力ができる」ことと「そのクエリをソースにした、さらに、連結フォームやサブフォームが作れてしまう(Excelフォームの開発効率の50倍以上・VBフォームの同・少なくとも30倍以上)」ということが大きな理由のひとつだと思います。
フォームのソースにクエリが使えるということは、フォームのソースにSQLが使える・フォームのいたるところでSQLが使える、という意味でもあります。プラス、Accessの場合そこから、フォーム経由→クエリ経由→テーブル、という流れで直接テーブルに対して手入力もでき、その部分のプログラムを書く必要がない(もちろん、逆にあえて書くこともできる)、という意味でもあります。
話が逸れてすみません。
「テーブル」をどんな意味合いで使っているかは・・・、つまり、「単なるリスト形式の表」のことなのか、「手入力した実表」のことなのか、それとも別の意味なのか、は、そのときそのときの文脈・状況で解釈・判断し分けてください。
※注意事項
Excelの2007以降だったか、「テーブル」と呼ばれる機能がありますが、その「テーブル」も、この「テーブル」と同じような意味で、そう名づけしたのではないかと推測されます。ただ、Excelの「機能としての」「テーブル」は、ここで言っている 一般的なデータベース用語の「テーブル」とは異なるものなので、本サイトにおいてただ単純に「テーブル」という用語が書いてあるときは、Excelの「テーブル機能」のことは、あえて思い起こさないでください。(なお、Excelというか、Microsoft Queryや「DAO」という機能を利用する時に出てくる「システムテーブル」というもの(用語)については、ここで言うデータベース的な「テーブル」と同じ意味合いです。)
※ここでの「テーブル」が、当サイトでもご紹介しています、「たった3枚の表で、30分でバーコードPOSレジのコア部分を作る」というものを可能にしています。
※★★ 重要関連記事
『もしお仕事中に「動的な表」を見つけたらこう思えるようになって下さい。「やったあ!無駄な多段的関数やVBAを無くしてExcelの自動集計機能がたくさん使える!面倒から解放される~!!」』
・リスト形式の表、データベース形式の表、明細表 (=「動的な表」)
列名だけが存在し、行名は無い、時系列としては縦(下向き)方向にデータが蓄積されていく表です。
前項の「テーブル」とまったく同じもの・・・、と考えてくださって結構です。
次のような感じです。
この形態の表は、並べ替えするだけでも色んなことがわかります。
また、「分析・仮説と検証・PDCAサイクル回し・問題の数値化」のための「集計やリストアップ」・・・の、スタート・起点となる表です。
例えば「ピボットテーブル」のソースにもでき、色んな形に変形させることができます。また、「ピボットテーブル」だけでなく、「集計」、「フィルタ」「フィルタオプション」、etc、といった機能を使って、動的に、自由に、「変形←→戻し」を短時間のうちに繰り返すことができます。
並べ替えできたり、いろんな形に変化させることができたり・・・、と、とても「発展性のある」かつ「動的」な表なので、当サイトでは「リスト形式の表(=テーブル)」のことを「動的な表」と呼ぶことも多いです。
(※ リスト形式の表=データベース形式の表=明細表=テーブル、です。)
なお、Excelでは、複雑な条件での「動的な表(リスト形式の表)」を作るのに、「Microsoft Query(ExcelVBAでは「QueryTable」オブジェクト)」という機能が大変便利に使えます。これと「ピボットテーブル」の2つの機能を組み合わせることで、「データ管理のムリ・ムダ・ムラ」を「100倍減らす」ことが可能となります。
ちょっと話が逸れますが、前述の「テーブル機能」も少し似た機能でして、便利に使える場面ももちろんあるのですが、ただ、「ビジネスデータ管理の世界標準の管理方法」を視野に入れると、圧倒的に「Microsoft Query」のほうが使い勝手が良く、データ管理コストが 時間コストも金額コストも 2~10倍は圧縮できます。
【詳細説明】
上図のように、列名(赤枠)しか持たない表のことです。行名は持ちません。
後述する「フィールド」と「レコード」で構成されたシンプルな表です。
列名のみをもち、日々のデータをただひたすら、延々と、何十万件も、下の方向へ蓄積していく、そういう表です。(数十件で終わる場合ももちろんあります(^^))
セルの結合は絶対にありませんし、空白行や空白列もありません。
1行あたり(1レコードあたり=1件あたり)の中身としては空白セルはあるものの、空白行は1つもありません。
また、同じ値が何度も何度も繰り返し出てきます。
なので一見、値ばっかり、データばっかりで、「データの海」という感じでとても不効率に見えます。
「明細表」というイメージです。そう呼ぶ人も居ます。
次項にて説明する「クロス集計表(マトリクス表)」は行名がありますが、「リスト形式の表」では列名だけです。
シンプルな構造な半面、データが多すぎて、一見しただけでは何がなんだかわかりません。
ですので、ピボットテーブルやSQL(Microsoft Query)のような自動集計機能で集計します。
ただ、構造がシンプルなだけに、「データ入力が子供でもできる」というメリットがあります。実際、私も過去に、確定申告時の経費の入力は、自分の子供にやらせていました(長男が高校生のとき)。レシートや領収書を見て、見たままを、ただひたすら下の方へデータを入力・蓄積していくだけですから。
入力は子供まかせなのでやる必要は無く、集計はピボットテーブルやMicrosoft Queryなどで自動集計ですから十数秒で終わります。「勘定科目」といって、会計上で定められた項目ごとに、自動集計が一瞬で終わります。
経費を記入する書類への転記も15分程度で終わります。
あとは税務署へ行って、作業員に処理してもらうだけです。
ちなみにですが、Google、セブンイレブン、NEC、富士通、アサヒビール、などの企業様が社内で使っているシステムをはじめ、弥生ソフト、勘定奉行シリーズソフト、一般的なブログシステム、ショッピングカートシステム、各種ホームページ、アフィリエイトシステム、非常に多くのソフトウェアシステムが、この「リスト形式の表(動的な表)」の形態(「フィールド」と「レコード」)で、データを管理しています。
「VBAプログラムなどを使う10分の1~100分の1のコスト・手間で、例えば、SQL(Microsoft Query)やピボットのような機能で、簡単に動的に変化=集計やリストアップをさせることができるため」です。
なお、基本、システム業者さんたちは、集計やリストアップに「ExcelのVBAプログラム」なんていう「データ管理の基礎を無視した彼らにとっては無駄なもの」は「いちいちは書かない」です(私らド素人にはExcelVBAは必要ですが)。
自分達はすでに、30年(下手したら40年)も前から、SQL(Excelでは「Microsoft Query」)という自動集計機能を持っているためです。
どのシステムもそれぞれ、画面の見た目はまったく違うのですが、内部的には、全部、この形式の表にデータが格納(蓄積)されています。
※ここでの「リスト形式の表=テーブル」が、当サイトでもご紹介しています、「たった3枚の表で、30分でバーコードPOSレジのコア部分を作る」というものを可能にしています。
※★★ 重要関連記事
『もしお仕事中に「動的な表」を見つけたらこう思えるようになって下さい。「やったあ!無駄な多段的関数やVBAを無くしてExcelの自動集計機能がたくさん使える!面倒から解放される~!!」』
列名と行名の2つを持つ表のことです。(下図参照)
「マトリクス表」などとも呼びます。
多くの方が作る、ごく一般的な表ですよね。
列名(縦軸)と行名(横軸)が、交差(クロス)したセルにて、数字を管理する形態です。交差、というところから、「クロス集計」と呼ばれます。
たとえば上の表なら、2012年の01月の理科の点数の合計は「163点」とすぐにわかります。
意味不明の明細表(リスト形式の表)とくらべて、コンパクトにまとまってとってもわかりやすいですよね。
ですので、何かを判断するとき、分析するときなどによく使います。
ある意味、数値表というものにおける「最終形」です。
実は、ピボットテーブルもこの「クロス集計表」の形態です。
(「ピボットテーブル」の「テーブル」は広義の「表」という意味に考えてください。テーブル=リスト形式の表と前述で説明してしまいましたが、ピボットテーブルはその形態をなしていません。「Pivot=旋回する」、ということで理解して下さし。つまり、「旋回する表。ルービックキューブのように切り口を色々と組み替えて旋回させて集計する表・・・というような意味に考えて良いと思います。)
並べ替えする必要があまりなく、「答えが出ている」「変形させようがない」「最終形」「発展性はあまりない」という「静的な」感じの表なので、当サイトでは「動的な表(リスト形式・明細形式)」との区別・対義語として「静的な表」と呼ぶことが多いです。
例えば、ピボットテーブルは動的な表(リスト形式の表)から、静的な表(クロス集計表)を作る機能、ということになります。
なお、Excelでは、複雑な条件での「動的な表(リスト形式の表)」を作るのに、「Microsoft Query(ExcelVBAでは「QueryTable」オブジェクト)」という機能が大変便利に使えます。これと「ピボットテーブル」の2つの機能を組み合わることで、「データ管理のムリ・ムダ・ムラ」を「100倍減らす」ことが可能となります。
・カラム(column)、フィールド、列
「テーブル(リスト形式の表)」における、「列」のことを差します。
「フィールド」と呼んだりもします。
高機能なデータベースシステム(SQL Server や オラクル、My SQL、PostgreSQLなど)では、列のことを「カラム(column)」と呼んでいます。
Excelの通常画面では、列、とだけ呼んでいますが、プログラミングをするための画面(VisuBasicEditor=VBEの画面)になると列のことを「カラム(column)」と表現する場面が増えます。
また、ピボットテーブル上では「列」のことを「フィールド」ととらえています。
Microsoft Query(SQL)上では「フィールド」ととらえることが多いような少ないような、どちらも使う感じでしょうか・・・。
また、Excelのセル参照の「RC形式」の、「C」は「カラム(column)」の「C」で、「R」は次項で説明する「ロウ(ROW=行)」の「R」だったような気がします。
Accessだとテーブルを作る場面では「フィールド」と呼ぶことが多く、プログラミングやドロップダウンリストなどの設定をする場面になると「カラム(column)」と表現する場面が増えます。
奥深くになってくると、必ず縦方向のことを「column」と言う場面が増えるので、もともとは「フィールド」よりも「column」を使うのが正式なのかもしれませんね。でも、いろんなソフト・いろんな場面でごちゃごちゃに使われているので、私ら素人レベルのプログラミングやデータ処理ではどっちでもいいと思います。
※新聞や書籍などに出てくる「コラム」も和製発音は違いますが同じ英単語・スペルです。「column」の直訳は柱、円柱、(新聞など印刷物の)縦の段、欄、といった意味だそうです。
・ロウ(row)、行
直訳で「行」のことです。
また、本記事のトップに書いた「テーブル」においての中に限りますが、次項の「レコード」と同じ意味です。
「レコード(Record)」は「テーブル」の場合の、「1行分のデータ」に相当します。
また、その「1行分のデータ」は、一般的に言って、カード形式のデータベースの「1画面分」に相当します。(逆に言うと、カード形式のデータベースは「1行」を「1画面」で表している・・・、ということになります。)
・フィールド(field)
前述した「カラム(column)=(列)」と同じ意味です。
高機能なRDBMSのSQLServerやオラクル、また、AccessでもVBAプログラムやドロップダウン設定の中では「列」のことは「カラム(column)=(列)」という単語が使われますが、AccessのVBAプログラムじゃない部分・・・例えばテーブル操作クエリ操作、あるいは、Excelのピボットテーブルなどでは「フィールド」が「列」を意味する言葉となります。(ピボットのソースの表に対して、ですが。「フィールドリスト」もそうです。つまりは「ソースの表の列名リスト」という意味です。ただし、ピボットそのものの中の列名や行名のことは「アイテム」と総称されています。)
カラムやフィールド、ロウやレコードなどの用語は、「どのソフトも気分で使っているのか?」と思わされくらいですので、私たちド素人の場合はカラムでもフィールドでもどちらでもいいと思いますが、ただ、ピボットテーブルの場合は、「列」に関しては「フィールド」という言葉が使われる、ということだけ覚えておいてください。
・セル
Excelのシートでは、その1マスの四角を「セル」と呼びます。
直訳では、細胞、セル、監房、独居室、というような意味があるようです。
カプセルホテルの寝床や蜂の巣における蜂の子の入る6角形の1区画も「セル」のようなものかもしれないですね。
なお、Accessなどのリレーショナル・データベースソフトでは「セル」という言葉はありませんが、当サイトでは、Accessのテーブルの1マスも便宜上、「セル」と呼ぶことにしています。
前述の「・フィールド02(field)」のところでのリンク先のWebページに書かれているように、「フィールド」と呼ぶこともあるようですが、Excelとの連携を説明するときなどは「セル」ということでご説明させていただいたほうが、学習する立場の方もわかりやすいので、あえて、「セル」と呼んでしまっています。
※本当は間違いだと思いますので、そのようにご理解ください。(ただ、間違いだとしても別に何の問題もありません。逆に、統一してセルと呼んでくれたほうが本当にラクです。)
・アイテム
これは、ピボットテーブルの用語としての「アイテム」です。
ピボットテーブルでは、ソースの表の「フィールド(列名)」を、「列見出し」や「行見出し」の設定項目として使います。
ピボットテーブルにおいての「列見出し」とは、ピボットテーブル内に限った「列名」のエリアのことです。
ピボットテーブルにおいての「行見出し」とは、ピボットテーブル内に限った「行名」のエリアのことです。
また、ピボットテーブルにおいての「フィールド」とは、ソースの表側の「列名」のことです。例えば「フィールドリスト」は、「ソースの表の側の列名リスト」という意味です。
例えば、ピボットテーブルにおいての「列見出し」の箇所へ「フィールド(ソース側の列名)」をドラッグすると、そのソース側の列に記録された各値が自動的にグループ化されて、ピボットテーブル内に、ピボットテーブル限定の「列名」として自動表示されます。
たとえばソースの表の「氏名」という列に、「田中 一郎」という値と「田中 次郎」という値が複数、存在していた場合に、ピボットテーブルの列見出しのエリア(=ピボット内の列名のエリア)に向かって、「氏名」というフィールド(ソース側の列名)をドラッグすると、次のような感じの動きになります。
(01)ソース表の「氏名」という列の中にあるすべてのセル値がチェックされる。
(02)そこには「田中 一郎」と「田中 次郎」という値しかなかったとする。すべてそれの重複と判明。
(03)ソースの表の「氏名」という列には「田中 一郎」と「田中 次郎」という値だけしかないとまとめられる。
(04)ピボット側の列名として「田中 一郎」と「田中 次郎」が表示される。
(05)集計値を表示するデータのエリアには、「田中 一郎」の集計値と「田中 次郎」の集計値が表示される。
これは「列見出し」だけでなく、「行見出し=行名」の場合も同じような感じの動きとなります。
かえって分かりにくくなってしまったかもしれませんのですみませんが、次のようにまとめることができると思います。
(A)ピボットテーブルにおける「フィールド」とは?
ソースの側の「列名」のこと。
ソースの表には「行名」は無くて、「列名」しかありません。
ピボットテーブルのソースの表はもともと「動的な表」なので。
(B)ピボットテーブルにおける「アイテム」とは?
(ソースの表の側ではなく)ピボットテーブルそのものの中においての「列名」や「行名」のこと。(=ソースの表の中の、集計のキーとしたい列の中に在る、同じ値 同士がグループ化されて、ピボット内の「列名」や「行名」となった「セル」のこと。)
もしくは、ピボットテーブルそのものの中においての、1列分のデータの塊、あるいは、1行分のデータの塊のこと。
いずれを指しているかは、文脈で判断することになりますが、後者の意味で使われることが多いです。
ピボットテーブルはクロス集計表なので、「列名」だけでなく「行名」もありますが、その両方ともが「アイテム」です。もしくは、1列分、1行分のデータの塊のことです。
なお、「アイテム」になる値は、もともとは、ソースの側の各列(各フィールド)のセルの中に入力されている各値で構成されます(あるいは、その各値たちがグループ化されたもの・・・という理解になります)。
かなり意味不明だったかもしれませんので少しまとめますと、ソース側(=動的な表)の「各フィールド」は、ピボット側の「列」の位置にも「行」の位置にも配置することができ(クロス集計するわけなので)、さらには、その配置した「フィールド(1列分)」の中の各値たちがグループ化されたものが、ピボットテーブルそのものの中においては「列名」にもなるし、「行名」にもなる・・・ということです。そしてそのグループ化された各値たち、つまり、ピボット側で列名や行名になった値を「アイテム」と呼んでいる・・・、あるいは、行名たちや列名たちそのものを「アイテム」と呼んでいる・・・ということなのです。また、ドラッグひとつで「行」にも「列」にも、どちらに入れ替えることもできる・・・ということになります。
そして、「アイテム」には「集計アイテム」というものもあります(列にも行にも)。それは、既存の複数のアイテム(列、または行)の値を使ってさらに四則演算等々をして、ピボットテーブルそのものの中に 新しい列や行を作る・・・ということです。ですので、その場合は、新しい列名や行名については好きな名前を自作することになりますので、純粋なソース側のセルの値を使うわけではないということになります。
(※ただし、列は列の中だけのアイテムたち、行は行の中だけのアイテムたち、で計算することになります。列のアイテムと行のアイテムとで計算することはできません。また、集計アイテムと同じような感じで「集計フィールド」というものもあります。ピボット上に表示されていないフィールドを事前計算してからピボット表示することができます。なので、そこそこイレギュラーな計算ができ、かつ、一括自動計算できることになり、数式入力ミスを減らすことにもつながる場合もあります。その数式内で関数も使えますし・・・(セルで使う関数と同じです。逆にそれが増えると数式ミスも増えてしまいますが・・・)。ピボットは「イレギュラーな計算・自由な計算ができない、とか、自由なレイアウトができない、と思われていることが多いのですが、使ってみると意外にもそうでもありません。それもこの「集計アイテム」や「集計フィールド」の機能、そのほか、一括レイアウト自動変更機能、などがあるからです。なので超多角的瞬間切り替え集計をしたいときはやっぱり便利です。)
- 投稿タグ
- 用語