データセットのサンプル
Adobe Experience Platform クエリサービスは、近似クエリ処理機能の一部としてサンプルデータセットを提供します。サンプルデータセットは、元のレコードのパーセンテージのみを使用して、既存の Azure Data Lake Storage(ADLS)データセットからの均一なランダムサンプルを使用して作成されます。このパーセンテージは、サンプリングレートと呼ばれます。精度と処理時間のバランスを制御するためにサンプリングレートを調整すると、クエリの精度を犠牲にする代わりに、処理時間を大幅に短縮し、ビッグデータに関する探索的なクエリを実行できます。
多くのユーザーは、データセットに対する集計操作に対して正確な回答を必要としないので、大規模なデータセットに関する探索的なクエリでは、近似クエリを発行して近似回答を返す方が効率的です。サンプルデータセットには元のデータセットのデータの割合しか含まれていないので、クエリの精度と引き換えに応答時間を向上させることができます。読み取り時に、クエリサービスでスキャンする必要がある行が少なくなるので、データセット全体に対してクエリを実行する場合よりも速く結果が得られます。
クエリサービスでは、近似クエリ処理のためのサンプルの管理に役立つように、データセットサンプルに対して次の操作をサポートしています。
- 均一なランダムデータセットのサンプルの作成。
- フィルター条件の指定(オプション)
- ADLS テーブルに対するサンプルのリストの表示。
- サンプルデータセットに対する直接クエリの実行。
- サンプルの削除。
- 元の ADLS テーブルが削除された場合の関連するサンプルの削除。
はじめに get-started
このドキュメントで説明している近似クエリ処理機能の作成および削除を使用するには、セッションフラグを true
に設定する必要があります。クエリエディターまたは PSQL クライアントのコマンドラインで SET aqp=true;
コマンドを入力します。
均一なランダムデータセットのサンプルの作成 create-a-sample
データセット名を指定して ANALYZE TABLE <table_name> TABLESAMPLE SAMPLERATE x
コマンドを使用し、そのデータセットから均一なランダムサンプルを作成します。
サンプルレートは、元のデータセットから取得したレコードの割合です。TABLESAMPLE SAMPLERATE
キーワードを使用して、サンプルレートを制御できます。この例では、値 5.0 は 50%のサンプルレートと等しくなります。値が 2.5 の場合は 25%と等しくなります。
ANALYZE TABLE example_dataset_name TABLESAMPLE SAMPLERATE 5.0;
フィルター条件の指定(オプション) optional-filter-criteria
均一なランダムサンプルのフィルター条件を指定できます。 これにより、分析済みテーブルのフィルター済みサブセットに基づいてサンプルを作成できます。
サンプルを作成する際、まずオプションのフィルターが適用され、次に、データセットのフィルター済みビューからサンプルが作成されます。 フィルターが適用されたデータセットサンプルは、次のクエリ形式に従います。
ANALYZE TABLE <tableToAnalyze> TABLESAMPLE FILTERCONTEXT (<filter_condition>) SAMPLERATE X.Y;
ANALYZE TABLE <tableToAnalyze> TABLESAMPLE FILTERCONTEXT (<filter_condition_1> AND/OR <filter_condition_2>) SAMPLERATE X.Y;
ANALYZE TABLE <tableToAnalyze> TABLESAMPLE FILTERCONTEXT (<filter_condition_1> AND (<filter_condition_2> OR <filter_condition_3>)) SAMPLERATE X.Y;
このタイプのフィルター済みサンプルデータセットの実例を次に示します。
ANALYZE TABLE large_table TABLESAMPLE FILTERCONTEXT (month(to_timestamp(timestamp)) in ('8', '9')) SAMPLERATE 10;
ANALYZE TABLE large_table TABLESAMPLE FILTERCONTEXT (month(to_timestamp(timestamp)) in ('8', '9') AND product.name = "product1") SAMPLERATE 10;
ANALYZE TABLE large_table TABLESAMPLE FILTERCONTEXT (month(to_timestamp(timestamp)) in ('8', '9') AND (product.name = "product1" OR product.name = "product2")) SAMPLERATE 10;
この例では、テーブル名は large_table
、元のテーブルに対するフィルター条件は month(to_timestamp(timestamp)) in ('8', '9')
、サンプリングレート(フィルター済みデータの X%)は、この場合は 10
です。
サンプルのリストの表示 view-list-of-samples
sample_meta()
関数を使用して、ADLS テーブルに関連付けられたサンプルのリストを表示します。
SELECT sample_meta('example_dataset_name')
データセットサンプルのリストは、以下の例の形式で表示されます。
sample_table_name | sample_dataset_id | parent_dataset_id | sample_type | sampling_rate | sample_num_rows | created
-----------------------------------------------------+--------------------------+--------------------------+-------------+---------------+-----------------+---------------------
x5e5cd8ea0a83c418a8ef0928_uniform_4_0_percent_ughk7 | 62ff19853d338f1c07b18965 | 5e5cd8ea0a83c418a8ef0928 | uniform | 4.0 | 391 | 19/08/2022 05:03:01
(1 row)
サンプルデータセットのクエリ query-sample-datasets
{EXAMPLE_DATASET_NAME}
を使用して、サンプルテーブルに対して直接クエリを実行します。 または、WITHAPPROXIMATE
キーワードをクエリの最後に追加すると、クエリサービスは、最も新しく作成されたサンプルを自動的に使用します。
SELECT * FROM example_dataset_name WITHAPPROXIMATE;
データセットサンプルの削除 delete-a-sample
削除操作を使用すると、データセットサンプルの最大数が 5 個に達した場合に、新しいサンプルを作成できます。
DROP TABLESAMPLE x5e5cd8ea0a83c418a8ef0928_uniform_2_0_percent_bnhmc;