Query Serviceでのデータアセットの整理

このドキュメントでは、Adobe Experience Platform Query Serviceで使用するデータセット、ビュー、一時テーブルなど、データアセットを整理するためのベストプラクティスに関するガイダンスを提供します。 データの構成方法と、この情報にアクセスし、更新および削除する方法に関する情報について説明します。

Experience Platform Data Lake内のデータ アセットが成長するにつれて、それらのデータ アセットを論理的に整理することが重要です。 クエリサービスは、サンドボックス内のデータアセットを論理的にグループ化できるSQL構造を拡張します。 この組織化方法により、スキーマ間でデータアセットを共有できます。スキーマを物理的に移動する必要はありません。

はじめに

このドキュメントを続ける前に、​ クエリサービス ​の機能について十分に理解し、​ ユーザーインターフェイスガイド ​を読んでいる必要があります。

クエリサービスでのデータの整理

次の例は、Adobe Experience Platform クエリサービスを通じて使用できる構造を示しています。標準のSQL構文を使用してデータを論理的に整理します。 まず、データポイントのコンテナとして機能するデータベースを作成することから始めましょう。 データベースには1つ以上のスキーマを含めることができ、各スキーマにはデータアセットへの1つ以上の参照(データセット、ビュー、一時テーブルなど)を含めることができます。 これらの参照には、データセット間の関係や関連付けが含まれます。

SQL クエリの作成にQuery Service UIを使用する方法の詳細なガイダンスについては、​ クエリエディターのユーザーガイド ​を参照してください。

サンドボックス内のデータセットを論理的に整理する次のSQL構文がサポートされています。

CREATE DATABASE databaseA;
CREATE SCHEMA databaseA.schema1;
CREATE table t1 ...;
CREATE view v1 ...;
ALTER TABLE t1 ADD PRIMARY KEY (c1) NOT ENFORCED;
ALTER TABLE t2 ADD FOREIGN KEY (c1) REFERENCES t1(c1) NOT ENFORCED;

例(簡潔にわずかに切り捨てられた)は、databaseAにスキーマ schema1が含まれているこの方法論を示しています。

データアセットのスキーマへの関連付け

データアセットのコンテナとして機能するスキーマを作成したら、標準のSQL ALTER TABLE構文を使用して、各データセットをデータベース内の1つ以上のスキーマに関連付けることができます。

次の例では、前の例で作成したdatabaseA.schema1 コンテナにdataset1dataset2dataset3およびv1を追加します。

ALTER TABLE dataset1 ADD SCHEMA databaseA.schema1;

ALTER TABLE dataset2 ADD SCHEMA databaseA.schema1;

ALTER TABLE dataset3 ADD SCHEMA databaseA.schema1;

ALTER VIEW v1  ADD SCHEMA databaseA.schema1;

データコンテナからのデータアセットへのアクセス

データベース名を適切に選定することで、任意のPostgreSQL クライアントは、SHOW キーワードを使用して作成したデータ構造のいずれかに接続できます。 SHOW キーワードの詳細については、SQL構文ドキュメント 🔗のSHOW セクションを参照してください。

"all"は、サンドボックス内のすべてのデータベースとスキーマコンテナを含むデフォルトのデータベース名です。 dbname="all"を使用してPostgreSQL接続を行うと、データを論理的に整理するために作成した​any データベースとスキーマにアクセスできます。

dbname="all"の下のすべてのデータベースを一覧表示すると、使用可能な3つのデータベースが表示されます。

SHOW DATABASES;

name
|---------
databaseA
databaseB
databaseC

dbname="all"の下のすべてのスキーマを一覧表示すると、サンドボックス内のすべてのデータベースに関連する3つのスキーマが表示されます。

SHOW SCHEMAS;

database       | schema
|----------------------
databaseA      | schema1
databaseA      | schema2
databaseB      | schema3

dbname="databaseA"を使用してPostgreSQL接続を行うと、次の例に示すように、その特定のデータベースに関連付けられている任意のスキーマにアクセスできます。

SHOW DATABASES;

name
|---------
databaseA


SHOW SCHEMAS;

database       | schema
|----------------------
databaseA      | schema1
databaseA      | schema2

ドット表記法を使用すると、選択したデータベースに接続された特定のスキーマに関連付けられたすべてのテーブルにアクセスできます。 DBNAME = databaseA.schema1;に接続すると、その特定のスキーマ (schema1)に関連付けられたすべてのテーブルが表示されます。 これにより、どのデータセットにどのテーブルが含まれているかに関する情報が提供されます。

SHOW DATABASES;

name
|---------
databaseA

SHOW SCHEMAS;

database       | schema
|----------------------
databaseA      | schema1

SHOW tables;
name       | type
|----------------------
dataset1| table
dataset2| table
dataset3| table

データコンテナのデータアセットの更新または削除

組織内(またはサンドボックス)のデータアセットの量が増えると、データコンテナからデータアセットを更新または削除する必要が生じます。 個々のアセットは、ドット表記法を使用して適切なデータベースとスキーマ名を参照することで、組織コンテナから削除できます。 最初の例でdatabaseA.schema1に追加されたテーブルとビュー(t1v1)は、次の例の構文を使用して削除されます。

ALTER TABLE databaseA.schema2.t1 REMOVE SCHEMA databaseA.schema2;
ALTER VIEW databaseA.schema2.v1 REMOVE SCHEMA databaseA.schema2;

データアセットの削除

DROP TABLE関数は、組織内のすべてのデータベースにテーブルへの単一の参照が存在する場合にのみ、Data Lakeからデータアセットを物理的に削除します。

DROP TABLE databaseA.schema2.t1;

データアセットコンテナの削除

標準のSQL関数を使用して、データベースとスキーマの両方を削除することもできます。

データベースの削除

データベースに関連付けられているデータアセットに他の参照がある場合、関数はデータベースの削除時にエラーをスローします。

DROP DATABASE databaseA;

スキーマの削除

スキーマを削除する際に注意すべき3つの重要な考慮事項があります。

  • スキーマを削除しても、テーブル、ビュー、一時テーブルなどのデータアセットは物理的には削除されません。
  • ターゲットスキーマで参照されているデータアセットがあり、モードがRESTRICTの場合、例外がスローされます。
  • ターゲットスキーマで参照されているデータアセットがあり、モードがCASCADEの場合、スキーマコンテナで参照されているすべてのデータアセットが削除され、スキーマコンテナが削除されます。
DROP SCHEMA databaseA.schema2;

次の手順

このドキュメントでは、Adobe Experience Platform Query Serviceで使用するデータアセットの整理と構造に関するベストプラクティスについて解説します。 クエリサービスのベストプラクティスについて引き続き学習するには、​ データ重複排除に関するドキュメント ​を読むことをお勧めします。

recommendation-more-help
experience-platform-help-query-service