コードの例データセットのメタデータ操作Code Repositories

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

Code Repositories

Python

PySpark で安定した主キーを作成する

このコードでは、PySpark の concat_ws() 関数と sha2() 関数を使用して、複数の列を連結し、必要に応じてその結果をハッシュ化することで、安定した一意の主キーを作成します。この方法により、データセット内の行を一意に識別するための、堅牢で安定した有効な主キーを確保できます。

主キーは一意で、null ではなく、安定している必要があります。単調増加する ID や乱数など、非決定論的な主キーや不安定な主キーを使用すると、次のような問題が生じる可能性があります。

  1. オブジェクトの識別:オントロジー内のオブジェクトは、主キーによって識別されます。元データセットをビルドするたびに新しい ID が生成されると、オブジェクトへの編集が失われる可能性があります。
  2. 変更の追跡:主キーが安定しておらず、再現性がない場合、データセットや行の変更を追跡することが難しくなります。
  3. パイプラインの整合性:主キーを生成するパイプラインや、そのデータセットに依存する下流のパイプラインをインクリメンタル(差分処理)で実行すると、重複やその他の不整合が生じる可能性があります。

主キーを作成する際は、データセット内の行を一意に識別できる列の組み合わせを使用することを推奨します。たとえば、出席記録のデータセットでは、student ID 列と date 列の組み合わせで行を一意に識別できます。

以下は、A、B、C の列によって行が一意に識別されるデータセットの主キーを生成するコードスニペットの例です。連結には concat_ws() 関数を使用し、必要に応じて sha2() 関数を使用することで、すべてのキーの長さと形式を統一します。

Copied!
1 2 3 4 5 6 7 from pyspark.sql import functions as F # すべての列を連結します df = df.withColumn("primary_key", F.concat_ws(":", "A", "B", "C")) # 必要に応じてハッシュを作成し、すべてのキーの長さと形式を統一します df = df.withColumn("primary_key", F.sha2(F.col("primary_key"), 256))

これらのベストプラクティスに従うことで、データセット内の行を一意に識別するための、堅牢で安定した有効な主キーを確保できます。

  • 言語: Python
  • 投稿日: 2024-09-16
  • タグ: pyspark, dataframe