注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Pipeline Builder でユニーク ID を作成する

Pipeline Builder では、ユニーク ID はデータの追跡、処理、および分析を容易にし、各レコードが個別に識別され、適切に処理されることを保証します。このため、レコードのユニーク識別子(ID)を作成することがよく必要です。このセクションでは、単調に増加する ID の使用が最善の方法ではない理由と、ユニーク ID を生成するための推奨される方法である文字列列の連結に続いて SHA256 ハッシュを使用する理由について説明します。

文字列列の連結と SHA256 ハッシュの使用

ユニーク ID を生成する最善の方法は、入力データから文字列列を連結し、連結された文字列の SHA256 ハッシュを作成することです。

Pipeline Builder でこの方法を使用してユニーク ID を生成するには、Pipeline Builder の変換パス内で以下の手順を実行します。

  1. データセット内の各レコードを一意に識別できる文字列列を特定します。
  2. 選択した文字列列を連結して、各レコードに対して単一の文字列を形成します。
  3. 「Hash sha256」を使用して、連結された文字列の SHA256 ハッシュを計算します。結果として得られる 256 ビットのハッシュは、64 文字の 16 進数文字列として表すことができ、各レコードのユニーク ID として機能します。

安定した ID のスクリーンショット

この方法にはいくつかの利点があります。

  • 整合性:同じ入力データは常に同じユニーク ID を生成するため、データパイプラインの異なる実行間で整合性が保たれます。これにより、レコードの追跡、重複の特定、データの調整が容易になります。特に、ID をオブジェクトのプライマリキーとして使用する場合、パイプラインを再構築することによってプライマリキーが変更されないようにしたいと考えるでしょう。さらに、下流でデータを扱う人が ID が安定していることに依存する可能性があるかどうかも検討してください。
  • 分散生成:ユニーク ID はデータ自体から導出されるため、複数のプロセスが同時にユニーク ID を生成でき、同期や中央集権的な調整が不要になります。これにより、分散データ処理環境でのスケーラビリティとパフォーマンスが向上します。

文字列列の連結に続いて SHA256 ハッシュを使用することで、スケーラブルで安全かつ一貫したユニーク ID を生成できるため、データパイプラインアプリケーションに最適な選択肢となります。

単調増加 ID の欠点

単調増加 ID は Pipeline Builder ではサポートされていませんが、Spark に精通したデータエンジニアによく使用されます。単調増加 ID は、1、2、3 などのように順番に生成されます。このアプローチは本質的にシンプルですが、いくつかの欠点があります。

  • ビルド間の不整合:Spark で単調増加 ID を使用する場合、同じアプリケーションの異なる実行間で生成される ID が変更されることがあります。これは、Spark がタスクをエグゼキュータに割り当てる方法が異なるため、異なる ID 割り当て順序が生じることが原因です。その結果、この不整合性は結果の再現性が低く、異なる実行を比較したり、増分更新を行ったりするのが難しくなり、ID 列に信頼性が低い選択肢となります。オントロジー オブジェクトのプライマリキーとして使用される場合、これはすべてのビルドで完全な再インデックスが必要になります。
  • 状態への依存:単調増加 ID を生成するには、行間で状態を維持する必要があります。

これらの欠点から、データパイプラインアプリケーションでユニーク識別子を生成するための最善の方法として、単調増加 ID の使用は適切ではありません。代わりに、前のセクションで詳述したように、文字列列の連結に続いて SHA256 ハッシュを使用することをお勧めします。

ハッシュするユニークな列のセットが利用できない場合

ビルドやプレビュー間で一貫性が保たれないことに注意してください。この方法は、ユニークな列のセットが特定できない場合の最後の手段として使用すべきです。

データにユニークな行を定義する列のセットがない場合は、ランダムな数のハッシュを使用して ID を作成できます。この方法で ID を作成するには、Pipeline Builder の変換パス内で以下の手順を実行します。

  1. 「Uniform random number」を使用してランダムな数を作成します。
  2. 列を文字列にキャストします。
  3. 「Hash sha256」を使用してその列をハッシュ化します。

ランダム ID のスクリーンショット