Dataplex メタデータ

このガイドでは、Dataplex メタデータと、Dataplex API を使用してそれを管理する方法について説明します。

概要

Dataplex は以下をスキャンします。

  • データレイク内の構造化と半構造化のデータアセット(テーブルのエンティティにテーブルのメタデータを抽出するため)
  • 画像、テキストなどの非構造化データ(ファイルセットのメタデータをファイルセットのエンティティに抽出するため)

Dataplex Metadata API を使用して、次のいずれかを行うことができます。

  • テーブルとファイルセットのエンティティのメタデータの表示、編集、削除
  • 独自のテーブルまたはファイルセットのエンティティのメタデータの作成

次のいずれかで Dataplex メタデータを分析することもできます。

  • Data Catalog(検索とタグ付けのため)
  • Dataproc Metastore と BigQuery(テーブルのメタデータのクエリと分析処理のため)

Dataplex API

このセクションでは、Dataplex API とそれと使用する主なリソースの概要を説明します。

コントロール プレーンの API

Dataplex コントロール プレーン API によって、レイク、ゾーン、アセット リソースを作成、管理できます。

  • レイク: 組織内のプロジェクトにわたってストレージ リソースを管理できる Dataplex サービス インスタンス。

  • ゾーン: レイク内のアセットの論理グループ。レイク内の複数のゾーンを使用して、準備状況、ワークロード、または組織構造に基づいてデータを整理します。

  • アセット: Cloud Storage バケットまたは BigQuery データセットに格納されたデータが存在するストレージ リソース。レイク内のゾーンにアタッチされます。

Metadata API

Dataplex Metadata API を使用して、テーブルとファイルセットのエンティティとパーティション内でメタデータを作成、管理します。Dataplex は、レイク内のまたはユーザーが指定したのいずれかのデータアセットをスキャンして、エンティティとパーティションを作成します。エンティティとパーティションは、関連するアセットと物理ストレージ ロケーションへの参照を維持します。

主なコンセプト

テーブル エンティティ:

明確に定義されたスキーマを持つ構造化データのメタデータ。テーブル エンティティは、エンティティ ID とデータのロケーションによって一意に識別されます。テーブル エンティティのメタデータは、BigQuery と Dataproc Metastore でクエリできます。

  • Cloud Storage オブジェクト: Cloud Storage API を介してアクセスされる Cloud Storage オブジェクトのメタデータ。
  • BigQuery テーブル: BigQuery API を介してアクセスされる BigQuery テーブルのメタデータ。
ファイルセット エンティティ:

非構造化データ(通常はスキーマレス)に関するメタデータ。ファイルセットは、エンティティ ID とデータ ロケーションによって一意に識別されます。各ファイルセットにはデータ形式があります。

パーティション:

テーブルまたはファイルセットのエンティティ内のデータのサブセットのメタデータ。一連の Key-Value ペアとデータ ロケーションによって識別されます。

Try the API

Dataplex の lakes.zones.entitieslakes.zones.partitions の API リファレンス ドキュメント ページを使用して、各 API に関連付けられたパラメータとフィールドを表示します。各 API メソッドのリファレンス ドキュメントに付属する [この API を試す] パネルを使用して、さまざまなパラメータとフィールドを使用して API リクエストを行います。認証情報を生成する必要なしでリクエストを作成、表示、送信でき、その後、サービスから返されたレスポンスを表示できます。

以下のセクションでは、Dataplex メタデータ API の理解と使用に役立つ情報を提供します。

エンティティ

エンティティの一覧表示

サービスによって返されるエンティティのリストを制限するには、list entities リクエスト URL にフィルタ クエリ パラメータを追加します。

エンティティの取得

デフォルトでは、Get Entity レスポンスには基本的なエンティティ メタデータが含まれます。追加のスキーマ メタデータを取得するには、リクエスト URL に view クエリ パラメータを追加します。

互換性の詳細: Dataplex メタデータはメタデータ API に一元的に登録されますが、BigQuery と Apache Hive Metastore と互換性のあるエンティティ テーブル メタデータのみが BigQuery と Dataproc Metastore に公開されます。Get Entity API は、CompatibilityStatus メッセージを返します。これは、テーブル メタデータが BigQuery と Hive Metastore と互換性があるかどうかと、互換性がない場合はその理由を示します。

エンティティの更新

この API を使用して、エンティティ メタデータを編集します。これには、ユーザーまたは Dataplex がエンティティのメタデータを管理するかどうかも含まれます。

  • この API は、すべての可変エンティティ フィールドの完全な置換を実行します。次のエンティティ フィールドは変更不可であり、更新リクエストで指定された場合は無視されます。
  • すべての可変エンティティ フィールドの値を指定します。これには、値が変更されていない場合でも、すべてのスキーマ フィールドを含みます。
  • etag フィールドを指定します。etag を取得するには、まず entities.get リクエストを送信します。このリクエストによって、レスポンスにエンティティの etag が返されます。
  • スキーマ フィールドの更新: Dataplex が検出したテーブル スキーマを更新して、精度を改善できます。
    • スキーマがファイルセットの場合は、すべてのスキーマ フィールドを空のままにします。
    • 繰り返しフィールドを定義するには、モードREPEATED に設定します。構造体フィールドを定義するには、RECORD に設定します。
    • スキーマの userManaged フィールドを設定して、ユーザーまたは Dataplex がテーブルのメタデータを管理するかどうかを指定できます。デフォルトの設定は Dataplex マネージドです。userManaged が true に設定されている場合、この設定は、EntityViewSCHEMA または FULL に設定されている場合に entities.get リクエストから返される情報に含まれます。
  • パーティション フィールドの更新:
    • Hive 以外のスタイルでパーティション分割されたデータの場合、Dataplex の検出ではパーティション キーが自動生成されます。たとえば、データパス gs://root/2020/12/31 の場合、パーティション キー p0p1p2 が生成されます。クエリをより直感的にするために、次のように更新できます。p0p1p2 をそれぞれ yearmonthday に更新できます。
    • パーティション スタイルを HIVE スタイルに更新すると、パーティション フィールドは変更不可になります。
  • 他のメタデータ フィールドの更新: 自動生成されたmimeTypeCompressionFormat、<a\ l10n-encrypted-href="4j47fNIJx6fHidLzUB36HWsP3kvJXL0i3UcbX/IwKQtqc4criDhrFJJZ9ixDkxAslKI4saGX4vTqchkefvDlbFc//gKFdIDFzeVtnjCSg31f+wmEXgsGyUPw72I/32Gy">CsvOptions、JsonOptions フィールドを更新して、Dataplex の検出に役立てることができます。Dataplex の検出は、次の実行時に新しい値を使用します。</a\>

エンティティを作成

entities.create API を使用して、テーブルまたはファイルセットのメタデータ エンティティを作成します。必須フィールドと関連するオプション フィールドに入力するか、Dataplex 検出サービスにオプション フィールドに入力させます。

エンティティの削除

  • etag フィールドを指定します。etag を取得するには、まず entities.get リクエストを送信します。このリクエストによって、レスポンスにエンティティの etag が返されます。

未加工のゾーン内のテーブルまたはファイルセットの基になるデータが削除されると、次の Discovery スキャン時に、テーブルまたはファイルセットのメタデータは自動的に削除されます。キュレートされたゾーン内のテーブルの基になるデータが削除された場合、それに応じてテーブル メタデータは削除されませんが、欠落しているデータ アクションが報告されます。この問題を解決するには、メタデータ API を使用してテーブル メタデータ エンティティを明示的に削除します。

パーティション

パーティションの一覧表示

サービスが返すパーティションのリストを制限するには、list partitions リクエスト URL にフィルタ クエリ パラメータを追加します。

例:

  • ?filter="Country=US AND State=CA AND City=Sunnyvale"
  • ?filter="year < 2000 AND month > 12 AND Date > 10"

パーティションの取得

パーティションを取得するには、partitions/value1/value2/…./value10 として読まれるようにフォーマットして、パーティション キー値を URL の末尾に追加して、リクエスト URL を完成させる必要があります。

例: パーティションに値 {Country=US, State=CA, City=Sunnyvale} がある場合、取得リクエスト URL の末尾は /partitions/US/CA/Sunnyvale になる必要があります。

重要: 追加する URL の値は二重エンコードする必要があります。たとえば、url_encode(url_encode(value)) を使用して「US:CA/CA#Sunnyvale」をエンコードして、リクエスト URL の末尾が /partitions/US%253ACA/CA%2523Sunnyvale となるようにできます。レスポンスの名前フィールドには、エンコードされた形式が保持されます。

パーティションの作成

データソース用にカスタマイズされたパーティションを作成するには、partitions.create API を使用します。必要な location フィールドを Cloud Storage パスで指定します。

パーティションの削除

partitions/value1/value2/…./value10 として読まれるようにフォーマットして、リクエスト URL の末尾にパーティション Key-Value を追加して、リクエスト URL を完成させます。

例: パーティションに値 {Country=US, State=CA, City=Sunnyvale} がある場合、リクエスト URL の末尾は /partitions/US/CA/Sunnyvale になる必要があります。

重要: 追加する URL 値は RFC-1034 に準拠しているか、二重エンコードする(US:/CA#/SunnyvaleUS%3A/CA%3A/Sunnyvale とするなど)必要があります。

次のステップ