> ## Documentation Index
> Fetch the complete documentation index at: https://domoinc-openapi-sync-dataflows.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 再帰的/スナップショットSQL DataFlowを作成する

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

DataFlow（SQL型もETL型も）は、コネクターのようにネイティブにデータを追加できません。ただし、データを追加するDataFlowを作成する必要がある場合は、それを一度実行し、その出力を次の実行のための入力の一部として使用することで可能になります。このようにして、DataFlowが実行されるたびに、その前のデータが追加され、新しいデータもそれ自身に追加されます。

<Warning>
  **重要：** 再帰的DataFlowの編集に誤りがあると、これまでのデータがすべて失われることがあります。編集中にこれを回避するには、履歴DataSetのコピーである追加のDataSetを作成してください。このDataSetは静的な状態のままになります。これまでのDataSetに何らかの問題が発生した場合に、編集前にコピーしたDataSetをバックアップとして使用できます。
</Warning>

**動画 - 再帰的なDataFlowとは？**

<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube-nocookie.com/embed/VkM5VznEzi8" width="560" />

**再帰的なSQL DataFlowを作成するには：**

1. SQL DataFlowを作成して実行します。

   出力DataSetのクエリは次のようになります。 `SELECT * FROM your-input-DataSet`

   <Frame>
     <img alt="recursive_sql1.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/KCcJNfmszCLwcqSc/images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvj.png?fit=max&auto=format&n=KCcJNfmszCLwcqSc&q=85&s=d04cc25744d8ddf2f311232a85f9308a" style={{width: 801, height: 726}} width="1536" height="1392" data-path="images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvj.png" />
   </Frame>
2. DataFlowを実行したら、出力DataSetを入力DataSetとして読み込みます。

   出力タイルには出力DataSetの名前の後に「1」が表示されます。

   <Frame>
     <img alt="recursive_sql2.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/KCcJNfmszCLwcqSc/images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvo.png?fit=max&auto=format&n=KCcJNfmszCLwcqSc&q=85&s=8bc318d28cd86fa58a3fbf65f6ea6d78" style={{width: 800, height: 698}} width="1606" height="1400" data-path="images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvo.png" />
   </Frame>

   DataFlowに2つのDataSet（更新元の DataSetと履歴のDataSet）がなければなりません。
3. 制約として使用する列を見つけます。これは、いつ履歴DataSetの中のデータを新しいデータに置換するかを決定する際に役に立ちます。制約列は通常、ID列、日付列、ほかの一意の識別子のいずれかです。この例では、「日付」列を制約として使用します。

   クエリは以下のようになります。

   <Frame>
     <img alt="" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/KCcJNfmszCLwcqSc/images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvi.png?fit=max&auto=format&n=KCcJNfmszCLwcqSc&q=85&s=56e1d8386969f88513d0bad39cbd548c" style={{width: 799, height: 395}} width="2552" height="1262" data-path="images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvi.png" />
   </Frame>
4. データをフィルターし、元のDataSetに存在しない履歴データを取得します。
5. 新しいDataSetと履歴DataSetを組み合わせます。

   <Frame>
     <img alt="" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/KCcJNfmszCLwcqSc/images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvl.png?fit=max&auto=format&n=KCcJNfmszCLwcqSc&q=85&s=20de5a024438e3cdb3592b99f7d0c1aa" style={{width: 799, height: 401}} width="2544" height="1276" data-path="images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvl.png" />
   </Frame>
6. 新しいデータを履歴DataSetとともに追加します。
7. ステップ1で作成した出力と同じものを使用してデータを出力します。新しい出力を作成する必要はありません。

   <Frame>
     <img alt="" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/KCcJNfmszCLwcqSc/images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvk.png?fit=max&auto=format&n=KCcJNfmszCLwcqSc&q=85&s=905b875b3d5bef4cffd4de22c1eac552" style={{width: 801, height: 411}} width="2532" height="1300" data-path="images/kb/ka05w00000123jI-00N5w00000Ri7BU-0EM5w000005vOvk.png" />
   </Frame>

日本語
