AppSheetを使っていると、FORMULAやINITUAL VALUEなどの数式の中で大カッコ(ブラケット)が2つ、あるいは3つくっついた記述が使われていることがあります。
例えば以下のようなものです。
NOT([Customer].[Employee?])
[Order Id].[Customer Name].[Email]
Select関数などでよく見かける SELECT( テーブル名[カラム名] )
のような記述なら意味はわかるけど、一体このカッコのが複数連続で続いたものは何を意味しているのかについてまとめています。
カッコ[ ]はカラムを表している
以下のようにカッコ[ ]が複数続く場合は、
NOT([Customer].[Employee?])
[Order Id].[Customer Name].[Email]
SELECT関数など他のものと全く一緒で、カラムを表してます。
つまり[Customer].[Is Employee?]
であれば、CustomerカラムとEmployeeカラムを表しています。
逆参照とは何か?デリファレンス(Dereference expressions)
このように、カッコ [ ]がドットで複数つながったものを式の逆参照といいます。英語では「Dereference expressions(デリファレンス エクスプレッション)」といいます。
逆参照(デリファレン/Dereference)とは、リファレンスの先の値を取得・参照することです。
リファレンス先とは、カラムの型で「Ref(リファレンス)」を設定したときの参照先のテーブルのカラムのことです。
AppSheetにおける式の逆参照の公式は以下のようになります。
[ref-column].[value-column]
これはrefに設定したカラムの参照先のテーブルの中の指定したカラムという意味です。
[ref-column1].[ref-column2].[value-column]
これはrefに設定したカラムの参照先のテーブルにある、refに設定したカラムの参照先のテーブルの中の指定したカラムという意味です。
ちなみにこのドット「.」でつなげることをチェーンといいます。
Refとは?
ちなみにRefとは、カラムの型で「Ref」を設定し、関連するテーブル(Reference table name)を指定したときに参照先のテーブルに自動生成されるバーチャルカラムです。
この時のバーチャルカラム名は「Related 参照先のテーブル名s」となります。
参照元のカラム
例えば、「貸出管理マスター」というテーブルの「書籍名」というカラムの型を「Ref」に設定します。
このRefを設定した書籍名カラムが逆参照の[ref-column]です。
なお、ここでの参照先のテーブルは「本一覧」としています。
参照先のテーブル
この設定をすると、参照先の「本一覧」テーブルの中に自動で、「Related貸出管理マスターs」というバーチャルカラムが追加されます。
カラムのスキーマを確認すると、Element typeが「Ref」で、Referenced table nameが「貸出管理マスター」となっています。
これが逆参照における、[ref-column]で指定した先のテーブルになります。つまり、[ref-column].[value-column]
の[value-column]をこの本一覧テーブルから指定するということです。
(ご参考)カッコの名前
今回この逆参照を解説するにあたってカッコと記述しましたが、カッコには様々な種類がありそれぞれ名称が違います。
AppSheetでカラムを指定するときによく使う [ ] はブラケットや大カッコと呼びます(らしいです)
- [] ・・・ 大かっこ、ブラケット
- () ・・・ かっこ、小かっこ、パーレン
- {} ・・・ 中かっこ、ブレース
- 「」 ・・・ かぎかっこ
- 〈〉 ・・・ やまかっこ
- 《 》 ・・・ 二重山括弧(にじゅうやまかっこ)
- 〔〕 ・・・ きっこう(亀甲)かっこ
- 【】 ・・・ すみつきかっこ
プログラミングでよく使用するのは上3つですね。