メインコンテンツまでスキップ
waffle.svg
Domo Knowledge Base

再帰的/スナップショットETL DataFlowの作成

Version 2

 

「再帰的」または「スナップショット」DataFlowとは、自らを入力として使用するDataFlowです。 

DataFlow(SQLタイプでもETLタイプでもない)は、コネクターのようにネイティブにデータを追加できません。ただし、データを追加できるDataFlowを作成する場合は、DataFlowを一度実行してから、その出力を次の実行時に入力データの一部として使用することができます。これにより、DataFlowを実行するたびに、以前のデータを保持しながら、新しいデータが追加されるようになります。 

重要:再帰的DataFlowの編集に誤りがあると、これまでのデータがすべて失われることがあります。編集時にこの問題を回避するには、これまでのDataSetのコピーである追加のDataSetを作成するようにしてください。コピーしたDataSetはそのまま保持されます。これまでのDataSetに何らかの問題が発生した場合に、編集前にコピーしたDataSetをバックアップとして使用できます。

ビデオ - 再帰的DataFlowについて

 

ETLで再帰的DataFlowを作成するには、

  1. ETL Dataflowを作成して実行します。
    recursive_etl1.png
     

  2. DataFlowを実行したら、出力DataSetを入力DataSetとして読み込みます。
    DataSet名には、出力DataSet名の後に「1」が表示されます。

    recursive_etl2.png

    これで、DataFlowに2つのDataSet(更新元のDataSetと履歴DataSet)が表示されるようになります。
    次に、制約として使用する列を確認する必要がありますこれにより、履歴DataSetのデータを新しいデータと置き換えるタイミングを判断することができます。制約列は通常、ID列または日付列であるか、他の一意の識別子を持っています。この例では、 「日付(Date)」列を制約として使用します。 

  3. [列を選択]を使用して、制約列のみを選択します。

    recursive_etl3.png

  4. [重複を削除]を使用して、制約の一意のリストを返します。

    recursive_etl4.png
     

  5. [制約を追加] を使用して、行を削除する必要がある場合に通知する新しい列を作成します。

    recursive_etl5.png

  6. 外部結合を使用して、削除を識別する列を履歴DataSetの一意の制約列に結合します。以下に示すように、結合の左側で履歴DataSetを選択した場合は、左外部結合を使用します。結合の右側で履歴DataSetを選択した場合は、右外部結合を使用します。(内部結合を選択すると、データが失われる可能性があるため選択しないでください。)

    recursive_etl6.png

    recursive_etl7.png

  7. DataSetから、「Delete Me」の値(またはステップ5で作成した識別子)を含む行をフィルターします。
    これにより、新しい更新DataSetに存在しない履歴DataSetの行のみが返されます。

    recursive_etl8.png

  8. [列を選択] を使用して、追加の一意の制約列( 「日付(Date)」)と一意の削除を識別する列を削除します。

    recursive_etl9.png

  9. [追加]を使用して、履歴DataSetと新しい更新DataSetを結合します。
    すべての手順が正しく実行された場合、両方のDataSetに「変更なし」と表示されます。

    recursive_etl10.pngrecursive_etl10.png

  10. [追加]タイルを出力に接続する

完了すると、ETLは以下のように設定されます。

recursive_etl11.png

トラブルシューティング/よくある質問

詳細については、「DataFlowとDataFusionのトラブルシューティングとよくある質問」または「Domoの DataFlowでユーザーが最も経験する5つの問題」を参照して、DataFlowの構築時に見られる一般的な問題とエラーを確認してください。


自らを入力DataSetとして使用するETL DataFlowを構築すると、後の実行でデータが追加できるようになります。