はじめに
「再帰的」または「スナップショット」DataFlowは、それ自身を入力として使用するDataFlowです。
DataFlow(SQLとMagic ETLの両方)は、コネクターのようにネイティブにデータを追加できません。ただし、データを追加するDataFlowを作成する必要がある場合は、それを一度実行し、その出力を次の実行のための入力の一部として使用することで可能になります。このようにして、DataFlowが実行されるたびに、その前のデータが追加され、新しいデータもそれ自身に追加されます。
重要:新しいMagic ETLの動作は大きく異なります。ミッションクリティカルなMagic ETL DataFlowを変換する前に、「新しいMagic ETLにアップグレードする」の記事をお読みください。これをお読みいただくと、DataFlowで想定外の動作が生じた場合に備えることができます。
ビデオ - 再帰的なDataFlowとは?
重要:再帰的DataFlowの編集に誤りがあると、これまでのデータがすべて失われることがあります。編集中にこれを回避するには、履歴DataSetのコピーである追加のDataSetを作成してください。コピーしたDataSetはそのまま保持されます。これまでのDataSetに何らかの問題が発生した場合に、編集前にコピーしたDataSetをバックアップとして使用できます。
Magic ETLで再帰的なDataFlowを作成するには、
- Magic ETL DataFlowを作成し、実行します。
- DataFlowを実行したら、出力DataSetを入力DataSetとして読み込みます。
出力タイルには出力DataSetの名前の後に「1」が表示されます。
DataFlowに2つのDataSet(更新元の DataSetと履歴のDataSet)がなければなりません。
次に、制約として使用する列を見つけます。これは、いつ履歴DataSetの中のデータを新しいデータに置換するかを決定する際に役に立ちます。制約列は通常、ID列または日付列、または他の一意の識別子です。この例では、「日付」列を制約として使用します。
- [列を選択]を使用して、制約列のみを選択します。
- [重複を削除]を使用して、制約の一意のリストを返します。
- 外部結合を使って新しいデータを履歴DataSetに結合します。結合の左側にある履歴DataSetを選択した場合、下に示すように左の外部結合を使用します。結合の右側にある履歴DataSetを選択した場合は、右の外部結合を使用します。(データが失われる可能性があるので、内部結合は選択しません。)日付列の名前が同じであれば、ステップ3で警告が表示されます。左の外部結合を行っている場合は、自動で右の表を修正できます。右の外部結合を行っている場合は、自動で左の表を修正できます。これにより競合する列が変更セクションに追加されます。保持したい場合は列の名前を変更し、そうでなければすべてを削除します。この場合、次のステップで[NULL値でなければ削除]に名前を変更します。
- 新しい日付列がNULL値でないDataSetから任意の行をフィルターします。
これは、新しい更新DataSetの中に存在しない、履歴DataSetからの行のみを返します。フィルタールールを追加するか、下の例のようにスクリプトルールを追加します。
フィルタールールを追加:
フォーミュラルールを追加: - [列の選択]を使って追加の日付列を削除します。
- [追加]を使用して、履歴DataSetと新しい更新DataSetを結合します。すべてのステップが正しく実行されている場合、DataSetは両方とも「変更なし」を表示します。
結合する列間でデータタイプが一致しない場合、データの処理方法を必ず選択してください。このオプションに関するより詳細な情報は、以下の「列の追加(結合)」セクションの「新しいMagic ETLにアップグレードする」にあります。 - [追加]タイルを出力に接続します。完了すると、ETLは以下のようになります。
トラブルシューティング/よくある質問
DataFlowとDataFusionのトラブルシューティングとよくある質問またはDataFlowを使用したユーザーエクスペリエンスのトップ5の問題を参照して、DataFlowの構築時に見られる一般的な問題とエラーを確認してください。
コメント
0件のコメント
サインインしてコメントを残してください。