2017-11-14 7 views
0

私はテーブルList1(9000 +/-レコード)とList2(9500レコード+/-)のフィールドを持っています。Qlikview Update、週単位のリストからの削除なしで追加

episodenum(主キー) ArchiveDate(各リストにユニーク) データ(複数のフィールド)のList1に存在するが、中には存在しない

  • レコードを保持私は毎週のテーブルを結合したい

    、リスト2は、ステータス 'OffList'として分類され、リスト1のデータ

  • リスト1およびリスト2に存在するレコードは、ステータス 'OnList'、データはリスト2、
  • 、リスト2 List1に存在する「NewToList」ステータスとして分類されていない、LIST2あたりなどのデータ(添付図参照)List1 and List2 and desired result

これは、SQLで十分な単純な問題ですが、自動でそのに参加QlikViewの負荷に発生し、私は困惑しています。

「OffList」レコードが保持されているときにテーブルが時間の経過とともに構築されるように、また選択肢ではなく単純なカウント式を使用してフルレコードセットがロードされ、結合されます。

これを行う簡単な方法はありますか?あなたはとても親切例を提供したとして、私は、同じデータを使用してスクリプトをお任せします

答えて

0

Data: 
LOAD * INLINE [ 
    X, Y 
    1, A1 
    2, A2 
    3, A3 
]; 

Left Join (Data) 
LOAD 
    X, 
    Y as NewY; 
LOAD * INLINE [ 
    X, Y 
    1, B1 
    2, B2 
    4, B4 
]; 

Left Join (Data) 
LOAD 
    X, 
    if(IsNull(NewY), 'OffList', 'OnList') as Status 
Resident Data; 

DROP FIELD NewY; 

LOAD 
    *, 
    'NewToList' as Status 
WHERE Not Exists(X); 
LOAD * INLINE [ 
    X, Y 
    2, B2 
    3, B3 
    4, B3 
]; 

今ステップの説明によってステップ:

  • は、元のテーブルをロードします
  • テーブルの2番目のバージョンをロードします。これにより、既存のテーブルの右側に新しい列が追加されます。 Xは両方のテーブルで同じ列になるので、最初のレコードと同じレコードを2番目のテーブルの同じレコードにリンクします。 Yの名前を変更する必要があります。それ以外の場合は、テーブルを結合するキーとしても使用されます。
  • テーブルキーを使用して、新しい結合を実行します。今回は、NewY列にあるアイテムを評価します。 nullの場合は、それが新しいレコードであることを意味します。それが満たされていれば、すでに存在していた。分類の第1段階が完了しました。
  • NewYを削除することはできますが、もう不要です。
  • テーブルの2番目のバージョンをもう一度ロードします。存在しないエントリのみをロードするようにしてください(Exists(X))。新しいものだけを読み込んでいる場合は、これらのステータスがNewToListになることを確認することができます。

希望すると、これは「簡単な」解決策と見ることができます。

+0

サンプルデータを使用して必要な結合を明確にするため、どうもありがとうございます。しかし、実際のデータでは、Yは複数のフィールドを表し、それぞれの名前を変更すると多くの労力がかかります。私は次のスクリプトを使って同じ結果を得ました。 –

+0

左結合のすべての列の名前を変更する必要はありません。最新の表と余分な列にキー列をロードするだけで、レコードがNULLかどうかをテストすることができます。 – BrunoMarques

関連する問題