8
10

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 5 years have passed since last update.

日付テーブルとしてマークする とは

Posted at

Power BI Desktop 2018年2月の更新で "日付テーブルとしてマークする" という機能が追加された。この機能は、PowerPivot や SSAS では用意されていた機能なのだけど、やっぱり Power BI Desktop でも必要ということで追加されたのでしょう。

日付テーブルについては 以前のポストの通り
日付テーブル は必要か、それが問題だ - Qiita

必須ということではないけれども

リレーションシップ で使用する列のデータ型が 日付型 であれば 設定しなくても結果は変わらないので、必要であれば設定すればよい。
独自に用意した日付テーブルを "日付テーブルとしてマークする"と クイック メジャーが割と使えるようになるので設定してもいんじゃないかなと思う。

どのようなときに使うか

たとえば

ファクト テーブル上で日付を表す列のデータ型が日付時刻ではないとき使用できる。個人的には DWH などでよく見かけるかな。

テーブル 'ファクト'

DateKey Quantity
20180105 1000
20180110 5000
... ...
20180210 700
20180220 300
... ...

テーブル 'カレンダー'

DateKey Year Month Day Dates
20180101 2018 1 1 2018-01-01
20180102 2018 1 2 2018-01-02
20180103 2018 1 3 2018-01-03
... ... ... ... ...

このとき、
リレーションシップは 'カレンダー'[DateKey] 1 --> * 'ファクト'[DateKey]
そして、
タイム インテリジェンス関数に使うのでテーブル 'カレンダー' には 日付型 もしくは 日付時刻型の [Dates]列 がある。

メジャー:TotalQuantity
TotalQuantity = SUM( 'ファクト'[Quantity] )
メジャー:TotalQuantityLM
TotalQuantityLM =
CALUCLATE(
    [TotalQuantity],
    PREVIOUSMONTH( 'カレンダー'[Dates] ),
    ALL( 'カレンダー' ) --- 日付テーブルとしてマーク & 日付列として指定しない場合に必要
)

タイム インテリジェンス関数自体は結果を返すけれども、伝搬されるフィルターによりメジャーで期待する結果が得られない。なので、結果セット各行で 'カレンダー'テーブルに適用されるフィルターを ALL 関数 で除外する必要がある。

日付テーブルとしてマークすると

自動的に適用される ALL

タイム インテリジェンス関数を使用する フィルターコンテキストに使用する場合、自動的に ALL( 'カレンダー' ) が適用されたものとなる。

メジャー:TotalQuantityLM
TotalQuantityLM =
CALUCLATE(
    [TotalQuantity],
    PREVIOUSMONTH( 'カレンダー'[Dates] )
)

中の人が用意した 日付テーブル

Power BI Desktop の タイム インテリジェンス機能 で用意された日付テーブルはすべて削除される。なぜなら、独自に日付テーブルを用意したから。あわせて、用意された内部の日付テーブルを使用するメジャーはすべて機能しなくなるのは必然。

その他

8
10
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
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?