0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Data Factory のメタデータ駆動のコピータスクにて`watermarkColumnStartValue`列を単独の列として保持する方法

Posted at

概要

Azure Data Factory のメタデータ駆動のコピータスクにて、DataLoadingBehaviorSettings列の json 内に保持されているwatermarkColumnStartValuewatermarkColumnStartValue列を単独の列として保持する方法を共有します。

実施手順

1. テーブル作成とデータ挿入のスクリプトを修正

テーブル定義にてwatermarkColumnStartValue列を追加。

            CREATE TABLE [dbo].[MainControlTable_557](
                [Id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
                [SourceObjectSettings] [nvarchar](max) NULL,
                [SourceConnectionSettingsName] [varchar](max) NULL,
                [CopySourceSettings] [nvarchar](max) NULL,
                [SinkObjectSettings] [nvarchar](max) NULL,
                [SinkConnectionSettingsName] [varchar](max) NULL,
                [CopySinkSettings] [nvarchar](max) NULL,
                [CopyActivitySettings] [nvarchar](max) NULL,
                [TopLevelPipelineName] [varchar](max) NULL,
                [TriggerName] [nvarchar](max) NULL,
                [DataLoadingBehaviorSettings] [nvarchar](max) NULL,
+                watermarkColumnStartValue [nvarchar](max) NULL,
                [TaskId] [int] NULL,
                [CopyEnabled] [bit] NULL
        ) 

image.png

メイン制御テーブルにおけるDataLoadingBehaviorSettings列の json 内に保持されているwatermarkColumnStartValuewatermarkColumnStartValue列として単独化。

        "DataLoadingBehaviorSettings": {
            "dataLoadingBehavior": "DeltaLoad",
            "watermarkColumnName": "update_timestamp",
            "watermarkColumnType": "DateTime",
-            "watermarkColumnStartValue": "2000-01-01T00:00:00.000Z"
        },
+        "watermarkColumnStartValue": "2000-01-01T00:00:00.000Z",
        "TaskId": 0,

image.png

2. メイン制御テーブルへの更新文を修正

                UPDATE [dbo].[MainControlTable_557]
-                SET [DataLoadingBehaviorSettings]=JSON_MODIFY([DataLoadingBehaviorSettings],'$.watermarkColumnStartValue', @watermarkColumnStartValue) WHERE Id = @Id
+                SET [watermarkColumnStartValue]=@watermarkColumnStartValue WHERE Id = @Id

image.png

3. MetadataDrivenCopyTask_xxx_BottomLevelにおけるDeltaLoadOneObjectアクティビティのソースのクエリを変更

-    json(item().DataLoadingBehaviorSettings).watermarkColumnStartValue, 
+    item().watermarkColumnStartValue, 
-    concat('''', json(item().DataLoadingBehaviorSettings).watermarkColumnStartValue, ''''))}
+    concat('''', item().watermarkColumnStartValue, ''''))}

image.png

3. MetadataDrivenCopyTask_xxx_BottomLevelにおけるDeltaLoadOneObjectアクティビティのソースのクエリを変更

-    json(item().DataLoadingBehaviorSettings).watermarkColumnStartValue, 
+    item().watermarkColumnStartValue, 
-    concat('''', json(item().DataLoadingBehaviorSettings).watermarkColumnStartValue, ''''))}
+    concat('''', item().watermarkColumnStartValue, ''''))}

4. MetadataDrivenCopyTask_xxx_BottomLevelにおけるDeltaLoadOneObjectアクティビティのシンクcw_fileNameのを変更

- @{json(item().SinkObjectSettings).fileName}-@{json(item().DataLoadingBehaviorSettings).watermarkColumnStartValue}-@{activity('GetMaxWatermarkValue').output.firstRow.CurrentMaxWaterMarkColumnValue}
+ @{json(item().SinkObjectSettings).fileName}-@{item().watermarkColumnStartValue}-@{activity('GetMaxWatermarkValue').output.firstRow.CurrentMaxWaterMarkColumnValue}

image.png

動作確認

パイプラインを実行して正常終了することを確認

image.png

メイン制御テーブルにおけるwatermarkColumnStartValue列が更新されていることを確認

SELECT * FROM [dbo].[MainControlTable_557]

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?