2017-09-18 9 views
0

イベントに関するデータを含むテーブルがあり、これは顧客に関連しており、時系列のシーケンスを示しています。関連するフィールドは、EventID(一意キー)、CustomerID(各顧客に一意)、EventTypeおよびEventDateです。テーブルの次のエントリを時間順に取得

特定のイベントが別のイベントを過ぎて発生した場合に表示される計算列を追加したいと思います。 「Purchase」タイプのイベントの後に、同じ顧客IDの「Payment Received」タイプのイベントが最初のイベントの後に起こった場合(EventDateに従って)、

Excelでは、今はvlookupを設定していますが、わかっている限り、PowerPivotにはそのような機能はありません。また、関連するイベントをRELATED()経由で取得するためにテーブルを分割しようとしましたが、結果の関係が多対多であるため、PowerPivotからエラーが発生します。

PowerPivotでこれを行う方法はありますか? (私は、問題を解決できるかどうかを事前にPower Queryのデータを操作することもできます)。

EDIT:SQLに関する問題の解決策を見つけました。私はPowerPivotのソリューションにも関心があります。

答えて

0

SQLを介してロードされたデータを変換するソリューションです。

SELECT TOP 1 WITH TIES ev.* 
    ,results.EventType 
    ,results.EventDate 
    FROM CustomerEvents ev 
    LEFT JOIN (SELECT CustomerID 
     EventType 
     EventDate 
     FROM CustomerEvents 
     WHERE EventType = 'Payment received' or EV_EventCode = 'Payment not received') as payments 
    ON payments.CustomerID = ev.CustomerID 
    AND payments.EventDate > ev.EventDate 
    WHERE EventType = 'Purchase' 
    ORDER BY ROW_NUMBER() over (PARTITION BY EventID ORDER BY payments.EventDate ASC) 

Order By payments.EventDate Ascは、私はその後、誤って、それがために意図されているよりもはるかに早く購入に支払いイベントを並べ替えてから私を防止TOP 1経由除外ます購入イベント後の早いイベントの日付を取得するそうです。

関連する問題