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?

【AzureDataFactory】タイムスタンプと「代理キー」アクティビティから1カラムでユニークキーを追加する方法

Last updated at Posted at 2024-12-20

はじめに

Azure Data FactoryのDataFrowで、タイムスタンプと「代理キー」アクティビティを使って1カラムでユニークキーを作成する方法を記載します。

AzureDataFactoryの「代理キー」アクティビティを使うとパイプライン実行ごとに決めた開始値から一意の値を作成することができます。
image.png

通常上記のように代理キーを入れておけばレコードの識別ができるのですが、予期せぬ事象が発生し以下のようにBさんのレコードが以前と全く同じ情報で再度インポートされるとテーブル全体で一意のレコードではなくなってしまいます。
image.png

上記のような事象に備えて可読性の高いタイムスタンプとAzureDataFactoryの「代理キー」アクティビティを組み合わせた項目の作成を検討したのでご紹介します。

なお当記事はAzureDataFactoryのDataFrowの設定から記載しております為、基本的な仕様や操作方法から確認する場合はMicrosoftLearn等をご確認ください。

方法

1.「代理キー」アクティビティを配置します。
image.png

2.「代理キーの設定」タブの「キー列」に項目名を入力し開始値、ステップ値を入力します。
(こちらの設定の場合代理キーは1,2,3,4....といった形で採番されます)
image.png

3.「派生列」アクティビティを配置します。
image.png

4.「派生列の設定」タブで先ほど作成したKeyを追加します。
特に式を設定しない場合Keyは1,2,3,4と作成されるため、0001,0002,0003,0004....と常に4桁の文字列を作成するために追加しています。(上記のような作業が不要な場合は4.作業は不要です)
image.png

5.続いてTimeStampを追加します。
式にTimeStamp()と入力すると、「2024-12-13 17:41:02.759」のように表示されます。
「20241213174102」のように「数字以外」、「小数点以下」の除去、「日本時間」で表示するように変換するためにTimeStampの式に以下を入力します。
concat(substring(toString(fromUTC(currentTimestamp(),'JST')), 0, 4), substring(toString(fromUTC(currentTimestamp(),'JST')), 6, 2), substring(toString(fromUTC(currentTimestamp(),'JST')), 9, 2), substring(toString(fromUTC(currentTimestamp(),'JST')), 12, 2), substring(toString(fromUTC(currentTimestamp(),'JST')), 15, 2), substring(toString(fromUTC(currentTimestamp(),'JST')), 18, 2))
image.png

6.もう一つ「派生列」アクティビティを配置します。
 先ほど配置したものを合わせると以下のような順番です。
image.png

7.「派生列の設定」タブでUNIQUEKEYを追加します。
 式には先ほど作成したTimeStampとKeyを組み合わせるために以下を入力します。
concat(TimeStamp, Key)
image.png

データのプレビューで確認すると以下のように[年月日時分秒代理キー]でデータが作成されます。
image.png

はじめにでご紹介した例で表現すると以下のようなデータが作成され、以前と全く同じ情報で再度インポートされた場合でもテーブル全体で一意のレコードにすることができます。
image.png

image.png

まとめ

Azure Data FactoryのDataFrowで、タイムスタンプと「代理キー」アクティビティを使って1カラムでユニークキーを作成する方法を紹介しました。GUIDを利用したり、複数カラムで複合キーにするなど方法は他にもあるかと思います。このような方法もあるのかとご参考になれば幸いです。

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?