2 種類のレポート (レポートの送信とレポートの受信) と、2 つのロールプレイング ディメンション (送信者と受信者) があります。送信者/受信者ごとに、ある組織の各レポートの金額を比較しようとしています。
私の現在のクエリは次のとおりです。
with member [Measures].[SentAmount] as ( [Receiver].[Code].&[XXX],[Measures].[Sent] )
member [Measures].[ReceivedAmount_Temp] as
(
[Sender].[Code].&[XXX],
[Measures].[Received]
)
member [Measures].[ReceivedAmount] as
(
LINKMEMBER
(
[Sender].[Code].CURRENTMEMBER,[Receiver].[Code]
),
root([Sender]),
[Measures].[ReceivedAmount_Temp]
)
SELECT
{
[Measures].[SentAmount],
[Measures].[ReceivedAmount]
} ON COLUMNS,
NON EMPTY
{ (
[Sender].[Code].[Code].ALLMEMBERS
*[Sender].[Name].[Name].ALLMEMBERS
)} FROM MyCube
結果は正しいが、実行時間が非常に長い。特に、15 ~ 20 のメジャーがある実際のクエリでは。
このクエリを何らかの方法で最適化することは可能ですか?