0

次のようなデータがあります。

Associate   ReferredBy  SalesQty    ReferralSales
Alice       Bob         50
Bob         Carl        60
Carl        NULL        70
Alice       NULL        80
Bob         Alice       90
Dan         Alice       10

列にはReferralSales、紹介によるアソシエイトの総売上を表示したいと考えています。

Alice は Bob と Dan を紹介する責任があり、結果として 100 単位の売上が達成されました。Bob は Alice に 50 ユニットを紹介しました。カールはボブ、60ユニットを紹介しました。ダンは誰にも紹介しませんでした。

これはどのように達成できますか?私が試してみました:

SUM({1 Associate = {ReferredBy}} SalesQty)
4

3 に答える 3

1

同じテーブルに ReferalSales を表示したい場合は、スクリプトに次のように追加します。

left join
Load ReferredBy as Associate, sum(SalesQty) as ReferredByQty Resident T1 group by ReferredBy;

RefferalSales calc で:sum(ReferredByQty) を使用すると、簡単に取得できます。

Associate   ReferredBy  SalesQty    ReferralSales
Alice           Bob         50          100
Alice           NULL        80          100
Bob             Alice       90          50
Bob             Carl        60          50
Carl            NULL        70          60
Dan             Alice       10          0
于 2016-08-11T08:50:36.090 に答える
0

あなたが求めたものとはまったく違うことはわかっていますが、スクリプトのトリッキーと if() ステートメントを少し使用して、必要なテーブルを作成できますが、方法が思いつかないため、セット分析ルートで空白になりますセット分析で次元を選択的に壊します。

私の解決策

私はこれを試しました

sum({<ReferredBy={'$(above(only(SelAssociate),0))'}>} SalesQty)

これを使用してAssociatteと同じ行でRefererを取得できるためabove(only(SelAssociate),0)、オブジェクトがレンダリングされると、行ごとではなくデータセット全体に対して$()が実行され、nullが返され、答えはnull()リファラーのみになります合計。セット状態は、式ごとに 1 回しか評価できないと思います。写真でも間違った表現を見ることができます。

これが、オブジェクト内の行ごとに機能する if() を使用した理由ですが、それでも次元を壊す必要があったため、スクリプトで Associates のハンギング リストを作成しました。

T:
load * inline [
Associate,ReferredBy,SalesQty 
Alice,Bob,50
Bob,Carl,60
Carl,,70
Alice,,80
Bob,Alice,90
Dan,Alice,10
];

Load distinct 
Associate as SelAssociate resident T;

そして、SelAssociate は次元であり、式は

sum(if(Associate=SelAssociate, SalesQty))
sum(if(ReferredBy=SelAssociate, SalesQty))
于 2016-08-11T09:50:20.657 に答える