6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Power BI] データリネージュと TREATAS

Last updated at Posted at 2022-01-29
1 / 16

はじめに

2022/01/29

PBIJP DAX Boot Camp #17 での発表内容です。


なにするの

この記事内ででてくるTREATAS関数がよくわからないので調べてみた。


そもそもデータリネージュとは

リネージュ=血統・血筋

データの血統。テーブル間のリレーションシップがどう引き継がれているか・・ってことかな。


実験1

区分名と西暦でクロスジョインしたテーブルを作り、受注額のカラムを追加します。

EVALUATE
FILTER (
    ADDCOLUMNS (
        CROSSJOIN (
            VALUES ( Products[区分名] ),
            VALUES ( Calender[] )
        ),
        "Amt", [受注額]
    ),
    [Amt] > 0
)

結果

image.png

期待した通りの値が出ています。


実験2

同じカテゴリー名を手動で定義したテーブルを作成し、売上列を追加する。

EVALUATE
VAR Categories = {
    "飲料",
    "調味料",
    "菓子類",
    "乳製品",
    "穀類/シリアル",
    "肉類",
    "加工食品",
    "魚介類"
}
RETURN
    ADDCOLUMNS (
        Categories,
        "Amt", [受注額]
    )

結果

カテゴリー名は同じものを定義していても、
データリネージュが失われているため売上金額は期待した値を集計してくれない。

image.png


実験3

列名を新たに定義しなおして、集計がどうなるか確認します。

EVALUATE
ADDCOLUMNS (
    SELECTCOLUMNS (
        VALUES ( Products[区分名] ),
        "新しいカテゴリー名", Products[区分名]
    ),
    "Amt", [受注額]
)

結果

列名は関係がなく、売上額は期待通り集計されています。
エンジンはデータリネージュを保持しています。

image.png


実験4

ほぼ同じDAX式ですが、区分名に を使用して、
hoge を追加して新しい区分名をつくります。

EVALUATE
ADDCOLUMNS (
    SELECTCOLUMNS (
        VALUES ( Products[区分名] ),
        "新しいカテゴリー名", Products[区分名] & "hoge"
    ),
    "Amt", [受注額]
)

結果

集計はうまく働きません。式を使用するとデータリネージュは失われます。

image.png


TREATAS関数

Applies the result of a table expression as filters to columns from an unrelated table.
テーブル式の結果をフィルタとして、無関係なテーブルのカラムに適用する。


実験4

TREATAS関数を使用して、自分で定義をしたCategories
データリネージュを変更する。

※存在しない列名は無視される。(この場合はプロテイン列)

EVALUATE
VAR Categories = {
    "飲料",
    "調味料",
    "菓子類",
    "乳製品",
    "穀類/シリアル",
    "プロテイン", --元のテーブルにはない項目を追加
    "肉類",
    "加工食品",
    "魚介類"
}
RETURN
    ADDCOLUMNS (
        TREATAS (
            Categories,
            Products[区分名]
        ),
        "Amt", [受注額]
    )

結果

データリネージュが変更され、集計が機能している。

image.png


まとめ

データリネージュとは、テーブル間のリレーションを意味している。データリネージュが維持されるときと、失われるときは正しく理解しておかないと、思わぬ集計ミスを招くこともありそうだ。

TREATASの使い所については別記事に。

むずい :thinking:

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?