2016-12-02 6 views
2

オンプレミスSQL Serverデータベースでは、一連のストアのさまざまなセールスデータがその日に挿入される多数のテーブルがあります。 Data Factoryとオンプレミスのデータ管理ゲートウェイを介して、Azureにこれらのデータを15分ごとに「収穫」したいと思います。明らかに、すべてテーブルデータを15分ごとにコピーすることには興味がありませんが、最後のフェッチ以降に挿入された行をコピーするだけです。 私が見る限り、documentationはこの目的でデータ「スライス」を使用することを提案しています。しかし、私が見る限り、これらのスライスは、データが取り出されるテーブルにタイムスタンプ(例えばdatetime)カラムが存在することを必要とします。Azureデータファクトリを使用したインクリメンタルデータ転送

  1. このようなタイムスタンプ列を持たずに、「デルタ」フェッチを実行できます(つまり、最後のフェッチ以降に挿入された行だけをフェッチできますか?代わりに連続整数列を使用できますか?あるいは、増分的に列を増やさなくてもいいですか?
  2. フェッチされた最後のスライスのウィンドウが08:15から08:30までであったとします。さて、データベースサーバーのクロックがAzureクロックの後ろにある場合、タイムスタンプが08:29 に設定されている一部の行が追加され、の後にスライスがフェッチされ、次のスライス(08:30〜08:45)が取得されます。この問題を避けるためのスマートな方法はありますか?スライスウィンドウを数分前に移動すると、リスクを最小限に抑えることができますが、完全に除去するわけではありません。
+0

カウンタの相違に応じて、アクティビティのポリシーオブジェクトに「遅延」を設定できます。 –

答えて

0

Azureデータファクトリを式から取り出します。ターゲットシステムへのデルタの移行をどのように手配しますか?いくつかのオプションがあると思います。

  1. ソーステーブルに日付を作成/変更した列を追加します。パラメーター化されたクエリを作成して、新しい値または変更された値のみを取得します。 ADFはこのシナリオをタイム・スライスとsystem variablesでサポートしています。再識別列では、ストアドプロシージャ(hereのように)と送信された最後のIDを追跡するテーブルを使用してこれを行うことができます。
  2. ソースシステムでChange Data Capture(CDC)を使用します。これにより、CDC機能を介してデルタにアクセスすることができます。上記の例のように、procでラップし、システム変数で呼び出します。
  3. すべてのデータを常にターゲットのステージングテーブルに転送します。どのレコードに変更があるかを調べるには、デルタコードEXCEPTMERGEを使用してください。明らかに大容量の場合は理想的ではありませんが、これは少量でも有効です。

HTH

0

私たちは、ADFにこの機能を追加することを計画しています。タイムスタンプではなく、順次整数列から開始できます。シーケンシャル整数列が役立つかどうか教えてください。

+0

はい、それは大いに役立ちます。 – someName

関連する問題