Power BI セマンティック モデルのテーブル プロパティ 行ラベル について、どんな機能?と考えるより実際の動作を把握するだけで充分である。
テーブルを用意し、Power BI ビジュアルに列を使用する。
TMDL
createOrReplace
table Table1
column PK
isKey
sourceColumn: [PK]
column Name
sourceColumn: [Name]
column 'Name (Row label)'
isDefaultLabel
sourceColumn: [Name (Row label)]
column Value
summarizeBy: sum
sourceColumn: [Value]
partition Table1 = calculated
mode: import
source = ```
DATATABLE(
"PK", INTEGER,
"Name", STRING, "Name (Row label)", STRING,
"Value", INTEGER,
{
{ 1, "NameA", "NameA", 10 }
, { 2, "NameA", "NameA", 20 }
, { 3, "NameB", "NameB", 20 }
}
)
```
行ラベルに定義した列は個別の値として扱われる。
ビジュアルにより発行される DAX クエリを読めば動作は明白である。
DAX query
DEFINE
VAR __DS0Core =
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL('Table1'[Name], "IsGrandTotalRowTotal"),
"SumValue", CALCULATE(SUM('Table1'[Value]))
)
VAR __DS0PrimaryWindowed =
TOPN(502, __DS0Core, [IsGrandTotalRowTotal], 0, 'Table1'[Name], 1)
EVALUATE
__DS0PrimaryWindowed
ORDER BY
[IsGrandTotalRowTotal] DESC, 'Table1'[Name]
行ラベルに定義された列を使用するとき、自動的にキー列を含めるという動作。
DAX query
// DAX Query
DEFINE
VAR __DS0Core =
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL(
ROLLUPGROUP('Table1'[PK], 'Table1'[Name (Row label)]),
"IsGrandTotalRowTotal"
),
"SumValue", CALCULATE(SUM('Table1'[Value]))
)
VAR __DS0PrimaryWindowed =
TOPN(
502,
__DS0Core,
[IsGrandTotalRowTotal], 0,
'Table1'[Name (Row label)], 1,
'Table1'[PK], 1
)
EVALUATE
__DS0PrimaryWindowed
ORDER BY
[IsGrandTotalRowTotal] DESC, 'Table1'[Name (Row label)], 'Table1'[PK]
思ったこと🙄
- Sort by column も似たような仕組みである
その他