パフォーマンスを向上させるために、いくつかのドリルダウン クエリを T-SQL から DAX に移動することを考えていました。私は DAX をクエリ言語としてあまり使用したことがなく、次の単純な SQL クエリを変換できる例を見つけるのに苦労していました。テーブルのフィルタリングとテーブルの結合の例を見つけることができましたが、DAX でこれらの操作を組み合わせた実際の例は見つかりませんでした。
変換したい次のクエリには、テーブルの結合とフィルタリングが含まれています。これをDAXで書き直すことは可能ですか?
私が抱えているもう 1 つの懸念は、列 fp.[Fact Product Id] のカーディナリティが非常に高く、実際には縮退した次元であるということです。これを MDX で書き直して表形式のキューブに対して実行しようとしたところ、クエリに時間がかかり、最終的にはメモリ不足エラーが発生しました。DAX クエリでも同じ問題が発生しますか?
Select dcpss.[Customer Product Status Rollup],
dcpss.[Customer Product Status],
dc.[Customer Id],
dc.[Customer Name],
dcps.[Customer Product Source],
dp.Country,
dp.[Product Number],
dp.[Product Name],
drbi.[Incident Number] As [Renewed By Order Number],
drbi.[Incident Status] As [Renewed By Order Status],
fp.[Fact Product Id] As [Product Id],
fp.[Product Count],
ded.[Date] As [Expiry Date]
From [rpt].[Fact Product] fp
Inner Join [rpt].[Active Dim Product] dp On dp.[Historical Product Key] = fp.[Product Key]
Inner Join [rpt].[Active Dim Customer] dc On dc.[Historical Customer Key] = fp.[Product Customer Key]
Inner Join [rpt].[Dim Expiry Date] ded On ded.[Expiry Date Key] = fp.[Expiry Date Key]
Inner Join [rpt].[Dim Customer Product Source] dcps On dcps.[Customer Product Source Key] = fp.[Customer Product Source Key]
Inner Join [rpt].[Dim Customer Product Status] dcpss On dcpss.[Customer Product Status Key] = fp.[Customer Product Status Key]
Inner Join [rpt].[Dim Renewed By Incident] drbi On drbi.[Renewed By Incident Key] = fp.[Renewed By Incident Key]
Where ded.[Month of Year Name] = 'June'
And ded.[Year Name] = 2015
And (ded.[Day of Month] = @DayOfMonth Or @DayOfMonth Is Null)
And dcps.[Customer Product Source] <> 'Free PP Product'
And dc.[Payment Type] <> 'Free'
And dp.Country = 'AU'
And dp.[Sales Type] <> 'Trial';