web-dev-qa-db-ja.com

SSAS表形式モデル時間付き日付ディメンション?

私は最初のSSASテーブルモデルを構築している最中ですが、DateTimeでメジャーを作成するまで、すべてが順調に進んでいると思いました。

私の倉庫にはDIm_Timeディメンションがあり、これにはDateTime列があり、過去2年間は5分ごとに1つの行があります。 5分は私たちが必要とする粒度です。さらに、テーブルにTimeID Identity列があります。私のETLでは、スロットに入れる5分の範囲に応じて、各ファクトテーブルに時間IDを割り当てます。したがって、最終結果は、ID上の2つのテーブル間の関係であり、TimeIDごとに10個のファクトがあるとします。

現在、時間範囲ごとに行の単純なカウントを実行しようとしています。たとえば、現在の時間のファクト数。私が見つけた問題は、メジャーのテスト時にPowerBIまたはExcelのどちらにもデータが表示されないことです。また、モデルがメジャーを計算するときにDateTimeを日付としてフィルター処理しているという事実に関連していることを90%確信しています。

Fcts by Date:= 
CALCULATE ( COUNTA(Fct_Table[IDColumn]), Dim_Time[DateTime])

DateTimeディメンションの操作に関して何かを見つけるのに苦労しているので、誰かが私を正しい方向に向けるのを手伝ってくれませんか。どうもありがとうございました。

私はSQL/SSAS 2017を使用しています

2
WadeH

全体的なカーディナリティが低下するため、通常は日付と時刻を別々のディメンションに保持しますが、日付ディメンションに時間要素がある場合でも、この値の取得に問題はありません。以下の例は私のシステムで作成され、DAX Studioでテストされました。

DEFINE 
    MEASURE Sales[TransactionCountPerTimePeriod] = COUNTROWS('Sales')
EVALUATE
SUMMARIZECOLUMNS (
    'Date'[DateKey],
    "Transaction Count", [TransactionCountPerTimePeriod]
);

モデル内でこの作業を行うには、次のようにメジャーの定義を取り、それを含めます。

TransactionCountPerTimePeriod:=COUNTROWS('Sales')

次に、モデルを公開した後、DAX Studio、Power BI、Excel、またはその他のレポートツールに表示されるはずです。

-- no need to define the measure if it is already in the model
-- just use it
EVALUATE
SUMMARIZECOLUMNS (
    'Date'[DateKey],
    "Transaction Count", [TransactionCountPerTimePeriod]
);
1
Mr.Brownstone