0

パフォーマンスを向上させるために、いくつかのドリルダウン クエリを 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';
4

1 に答える 1