コードの例Common operationsコードリポジトリ

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

コードリポジトリ

Python

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

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

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

  1. オブジェクトの識別: オントロジー内のオブジェクトは主キーで識別されます。バックエンドデータセットのビルドごとに新しいIDセットが生成される場合、オブジェクトへの編集が失われることがあります。
  2. 変更追跡: 主キーが安定して再現可能でないと、データセットや行の変更を追跡することが難しくなります。
  3. パイプラインの一貫性: データセットに依存する下流のパイプラインや主キーを生成するパイプラインのインクリメンタルな実行は、重複やその他の不整合を引き起こす可能性があります。

主キーを作成するベストプラクティスは、データセット内の各行を一意に識別できる列の組み合わせを使用することです。たとえば、出席データセットでは、student IDdate列の組み合わせが各行を一意に識別できます。

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

Copied!
1 2 3 4 5 6 7 from pyspark.sql import functions as F # 全ての列を連結して新しいカラム "primary_key" を作成 df = df.withColumn("primary_key", F.concat_ws(":", "A", "B", "C")) # 必要に応じてハッシュを作成し、全てのキーが同じ長さと形式を持つようにする df = df.withColumn("primary_key", F.sha2(F.col("primary_key"), 256))

これらのベストプラクティスに従うことで、ユーザーの主キーが強固で安定し、データセット内の行を一意に識別するのに効果的であることを保証できます。