PlaidXLカスタム関数
PlaidXLは、PlaidCloudのデータをセルに直接読み込むExcel関数を追加します。セルに=PLAIDXL.と入力すると、Excelのオートコンプリートに関数が一覧表示され、各引数の簡単な説明が表示されます。
| グループ | 関数 | 用途 |
|---|---|---|
| 一覧 | LIST_PROJECTS、TABLE.TBL_LIST、TABLE.GET_COLUMNS、DIMENSION.DIM_LIST |
構築に使用できるものを確認する |
| テーブル | TABLE.GET_TABLE |
テーブル全体を範囲に読み込む |
| 階層 | DIMENSION.GET_DIMENSION、DRILL |
ディメンションのノードをレポートの行としてレイアウトする |
| 値 | CELL、CELLS |
ノードの任意の組み合わせについて集計値を計算する |
| 構成要素 | REPR.TABLE_REPR、REPR.MEASURE、REPR.MEASURES、REPR.MEASURE_TYPE、REPR.DIMENSION_REPR、REPR.DRILL_KEY |
CELL、CELLS、DRILLが使用するテーブル、メジャー、集計、ノード、ドリルの深さを記述する |
カスタム関数でレポートを作成するでは、これらの関数を組み合わせて使う方法を紹介しています。
関数の仕組み
Section titled “関数の仕組み”- 最初にサインインします。 関数はPlaidCloudのサインインを使って読み取るため、使用する前にタスクペインからサインインしてください。
- 選択中のプロジェクトから読み取ります。 すべての関数は、タスクペインで選択したプロジェクトから読み取ります。
GET_TABLE、TBL_LIST、DIM_LISTは、選択を変更せずに別のプロジェクトを読み取るための、オプションのプロジェクトIDも受け取ります。選択内容は、開いているすべてのブックで共有されます。 - 結果は展開されます。 リストやテーブルを返す関数は、その下(または右)のセルに結果を埋めます。結果のための余白を空けておいてください。何かが邪魔をしている場合、Excelには
#SPILL!エラーが表示されます。 - 変更を反映するには再計算します。 PlaidXLの数式は、引数のいずれかが変更されたときに再取得します。PlaidCloudの新しいデータや、タスクペインで選択した別のプロジェクトを反映するには、完全な再計算を強制します。WindowsではCtrl+Alt+F9を押します。Refresh All Tablesが更新するのは取得したテーブルであり、数式ではありません。
- 正確な名前を使用します。 テーブル名、列名、ディメンション名、ノード名は、PlaidCloudに表示されているとおりに入力してください。
角かっこで囲まれた引数は省略可能です。
LIST_PROJECTS
Section titled “LIST_PROJECTS”=PLAIDXL.LIST_PROJECTS([horizontal])
開くことができるプロジェクトの名前を、名前順に一覧表示します。
horizontal—TRUEにすると行方向に一覧表示します。デフォルトはFALSEで、列方向です。
TBL_LIST
Section titled “TBL_LIST”=PLAIDXL.TABLE.TBL_LIST([project_id], [horizontal])
プロジェクト内のテーブルの名前を、名前順に一覧表示します。
project_id— 読み取るプロジェクト。デフォルトは、タスクペインで選択したプロジェクトです。horizontal—TRUEにすると行方向に一覧表示します。デフォルトはFALSEで、列方向です。
GET_COLUMNS
Section titled “GET_COLUMNS”=PLAIDXL.TABLE.GET_COLUMNS(table_name, [column_filter], [orientation])
選択中のプロジェクトにあるテーブルの列名を一覧表示します。
table_name— PlaidCloudでのテーブルの名前。column_filter—"text"などのデータ型。その型の列のみを一覧表示します。省略すると、すべての列を一覧表示します。orientation— 列方向の"vertical"(デフォルト)、または行方向の"horizontal"。
DIM_LIST
Section titled “DIM_LIST”=PLAIDXL.DIMENSION.DIM_LIST([project_id], [horizontal])
プロジェクト内のディメンションの名前を一覧表示します。
project_id— 読み取るプロジェクト。デフォルトは、タスクペインで選択したプロジェクトです。horizontal—TRUEにすると行方向に一覧表示します。デフォルトはFALSEで、列方向です。
GET_TABLE
Section titled “GET_TABLE”=PLAIDXL.TABLE.GET_TABLE(table_name, [project_id], [limit])
テーブルの行をヘッダー行付きで返し、数式のセルから展開します。空の値は空白のセルとして返されます。
table_name— PlaidCloudでのテーブルの名前。project_id— 読み取るプロジェクト。デフォルトは、タスクペインで選択したプロジェクトです。limit— 返す行数の上限。デフォルトは1,048,575で、ワークシートがヘッダー行の下に保持できる最大数です。
GET_TABLEはすべての列を返します。列を選択したり行をフィルターしたりする場合は、代わりにタスクペインからテーブルを取得してください。
GET_DIMENSION
Section titled “GET_DIMENSION”=PLAIDXL.DIMENSION.GET_DIMENSION(dimension_name, start_node, [hierarchy], [orientation], [generation_limit])
start_nodeから始めて、その子孫をたどりながらディメンションのノードをレイアウトします。各世代は親より4スペース多くインデントされ、Excelのアウトライングループで各レベルを折りたたんだり展開したりできます。
dimension_name— ディメンションの名前、またはプロジェクト内でのそのパス。start_node— 開始するノード(ディメンションのルートなど)。hierarchy— たどる代替階層。デフォルトは"main"です。orientation— ノードを列方向に一覧表示する"vertical"(デフォルト)、または行方向に一覧表示する"horizontal"。generation_limit— 返す世代数。start_nodeを最初の世代として数えます。2を指定すると、開始ノードとその子が返されます。省略すると、すべての世代を返します。
=PLAIDXL.DRILL(dimension_name, start_node, drill_key, [hierarchy])
start_nodeと、drill_keyが求めるその下のノードを、世代ごとにインデントしてExcelのアウトラインにグループ化し、列方向に返します。
dimension_name— ディメンションの名前、またはプロジェクト内でのそのパス。start_node— ドリルの起点となるノード。drill_key— どこまでドリルするか。DRILL_KEYで指定します。すべての子孫、リーフのみ、または指定したレベル数です。hierarchy— たどる代替階層。デフォルトは"main"です。
たとえば、=PLAIDXL.DRILL("Region", "Total", PLAIDXL.REPR.DRILL_KEY("leaves"))は、Totalに続いて、その下にあるすべてのリーフのリージョンを一覧表示します。
リボンのドリルコマンドは、2つのセルに入力したディメンションとノードに対して、数式を書かずに同じ処理を行います。
CELLとCELLSは、1つ以上のディメンションで選択したノードまで集計されたメジャー(テーブルの数値列)を計算します。各呼び出しを、レポート内の1つの交点と考えてください。たとえば、FY2026のEMEAの収益です。
交点は、以下の構成要素関数で記述します。通常は専用のセルに配置し、そのセルを任意の順序でCELLまたはCELLSに渡します。
| 引数 | 作成に使用する関数 | 必須 |
|---|---|---|
| 読み取るテーブル | TABLE_REPR |
ちょうど1つ |
| 集計する列 | CELLの場合はMEASURE、CELLSの場合はMEASURESまたは複数のMEASUREセル |
はい |
| 集計方法 | MEASURE_TYPE |
いいえ — デフォルトはsum |
| 列に対するフィルター | DIMENSION_REPR |
少なくとも1つ。列ごとに1つ |
各フィルターは、テーブルの列と値を指定します。その列がPlaidCloudのディメンションにリンクされている場合、値はノードとなり、フィルターにはディメンションのメイン階層でそのノードに集計されるすべてが含まれます。地理ディメンションにリンクされたRegion列では、ノードEMEAは、その下のすべての国を対象とします。ディメンションにリンクされていない列では、フィルターは値と完全に一致するものを対象とします。
このページの例では、Region列とPeriod列がディメンションにリンクされているテーブルを使用しています。ご自身のテーブルの列名を使用してください。
=PLAIDXL.CELL(table, measure, [measure_type], node, [node], ...)
1つの数値を返します。指定したすべてのノードに該当する行にわたって集計されたメジャーです。
A1 =PLAIDXL.REPR.TABLE_REPR("Sales")A2 =PLAIDXL.REPR.MEASURE("revenue")A3 =PLAIDXL.REPR.MEASURE_TYPE("sum")A4 =PLAIDXL.REPR.DIMENSION_REPR("Region", "EMEA")A5 =PLAIDXL.REPR.DIMENSION_REPR("Period", "FY2026")B1 =PLAIDXL.CELL(A1, A2, A3, A4, A5)B1には、FY2026のEMEAの収益合計が表示されます。
=PLAIDXL.CELLS(table, measures, [measure_type], node, [node], ...)
CELLと同様ですが、複数のメジャーを一度に処理します。指定した順に、メジャーごとに1つの数値を列方向に返します。
D1:F1 revenue | cost | unitsD2 =PLAIDXL.REPR.MEASURES(D1:F1)B2 =PLAIDXL.CELLS(A1, D2#, A3, A4, A5)D2#は、MEASURESの展開結果全体を渡します。B2:B4には、FY2026のEMEAのrevenue、cost、unitsが表示されます。
これらの関数自体はデータを読み取りません。それぞれが、計算の一部を記述する短いテキストを返し、CELL、CELLS、DRILLに渡せる状態にします。参照するセルに配置しておくと、たとえば期間を変更するだけで、それを使用するすべての数式が更新されます。
TABLE_REPR
Section titled “TABLE_REPR”=PLAIDXL.REPR.TABLE_REPR(table_name)
CELLとCELLSが読み取るテーブルです。選択中のプロジェクトでの名前で指定します。
MEASURE
Section titled “MEASURE”=PLAIDXL.REPR.MEASURE(column_name)
CELLが集計する数値列です。
MEASURES
Section titled “MEASURES”=PLAIDXL.REPR.MEASURES(column_names)
CELLS用の複数のメジャー列です。列名を保持するセルの範囲から指定します。結果は列ごとに1つのセルに展開されます。D2#のように、展開演算子を付けてCELLSに渡します。
MEASURE_TYPE
Section titled “MEASURE_TYPE”=PLAIDXL.REPR.MEASURE_TYPE(agg_function)
メジャーの集計方法です。agg_functionは次のいずれかで、小文字で指定します。
| 値 | 返される値 |
|---|---|
sum |
合計(メジャータイプを渡さない場合のデフォルト) |
mean |
平均 |
median |
中央値 |
min |
最小値 |
max |
最大値 |
std |
標準偏差 |
var |
分散 |
DIMENSION_REPR
Section titled “DIMENSION_REPR”=PLAIDXL.REPR.DIMENSION_REPR(dimension_name, start_node)
CELLとCELLS用のフィルターです。フィルターする列ごとに1つ渡します。
dimension_name— テーブルの列の名前。"Region"のように、ディメンションの値を保持する列です。列名と完全に一致する必要があります。テーブルにない列を指定するとエラーが返されます。start_node— 集計先のノード("EMEA"など)。ディメンションにリンクされていない列では、一致させる値です。
グリッドを作成するには、ノードにセルを参照します。=PLAIDXL.REPR.DIMENSION_REPR("Region", $A7)のようにします。先頭と末尾のスペースは無視されるため、DRILLがレイアウトしたインデント付きのノード名を指すこともできます。
DRILL_KEY
Section titled “DRILL_KEY”=PLAIDXL.REPR.DRILL_KEY(d_key)
DRILLが開始ノードの下をどこまでたどるかを指定します。d_keyはプレーンテキストです。
d_key |
ドリルする範囲 |
|---|---|
"all" |
すべての子孫 |
"leaves" |
リーフのみ — その下に何もないノード |
"1 level"、"2 levels"、… |
その世代数だけ下まで |
数値は数字で書きます。"two levels"ではなく"2 levels"です。先頭のdrillは無視されるため、"drill 2 levels"も使用できます。
2レベル以上を指定すると、DRILLは各ノードをその親の直下に並べるのではなく、世代ごとに(すべての子、次にすべての孫の順に)一覧表示します。入れ子のレイアウトにするには、"all"を使用するか、generation_limitを指定したGET_DIMENSIONを使用します。
- カスタム関数でレポートを作成する — 階層を縦に、値を上端に横に配置する
- テーブルとディメンションを操作する — 関数が読み取るプロジェクトを選択する
- ディメンションの使用 — メイン階層と代替階層、およびノードが集計される仕組み
- ディメンション階層を設計する — レポートが集計される階層を構築する