0

[Measure].[ChildCount] と [Measure].[Buyings] の 2 つのメジャーと、[Buyers] と [Sellers] の 2 つのディメンションがあります。

[Measure].[ChildCount] は [Buyers] ディメンションを使用して、各バイヤーの子組織をカウントします。[Measure].[Buyings] は、[Buyers] と [Seller] を使用して、[Seller] から [Buyer] への購入をカウントします。

私が達成したいのは、ChildCount < 1 の購入者と ChildCount > 0 の購入者のすべての購入を選択することです。

現在、これらのクエリは正常に動作しています: 各送信者/購入者の購入をカウントする最初のクエリ:

SELECT [Measure].[Buyings] on COLUMNS,
[Sellers].[Code].[Code] *
[Buyers].[Code].[Code] ON ROWS
FROM MyCube

2 つ目は、子供がいる場合といない場合の購入者の購入額を計算します。

WITH MEMBER [Measure].[BuyingsWithChilds]
as SUM
(
FILTER([Buyers].[Code].[Code],[Measure].[ChildCount]>0),
[Measure].[Buyings]
)
MEMBER [Measure].[BuyingsWithoutChilds] 
as SUM
(
FILTER([Buyers].[Code].[Code],[Measure].[ChildCount]<1),
[Measure].[Buyings]
)
SELECT
{
[Measure].[BuyingsWithChilds],
[Measure].[BuyingsWithoutChilds]
} ON COLUMNS,
[Buyers].[Code].[Code] ON ROWS
FROM MyCube

しかし、これらのクエリを目的のクエリに結合しようとすると:

    WITH MEMBER [Measure].[BuyingsWithChilds]
    as SUM
    (
    FILTER([Buyers].[Code].[Code],[Measure].[ChildCount]>0),
    [Measure].[Buyings]
    )
    MEMBER [Measure].[BuyingsWithoutChilds] 
    as SUM
    (
    FILTER([Buyers].[Code].[Code],[Measure].[ChildCount]<1),
    [Measure].[Buyings]
    )
    SELECT
    {
    [Measure].[BuyingsWithChilds],
    [Measure].[BuyingsWithoutChilds]
    } ON COLUMNS,
    [Sellers].[Code].[Code] ON ROWS
    FROM MyCube

このクエリの実行には時間がかかります。これを修正または最適化することは可能ですか?

4

1 に答える 1

0

を「HasChildren」のような属性に変換する[Measure].[ChildCount]>0と、通常は遅く、2 回使用する関数を回避できます。[Measure].[ChildCount]<1Filter

次に、WITH句は次のように簡略化されます

WITH MEMBER [Measure].[BuyingsWithChilds]
as ([Buyers].[HasChildren].[Yes], [Measure].[Buyings])
MEMBER [Measure].[BuyingsWithoutChilds]
as ([Buyers].[HasChildren].[No], [Measure].[Buyings])

の標準的な集計を使用するため、これははるかに高速になるはずです[Measure].[Buyings]

于 2013-11-06T22:22:25.280 に答える