Functions#
リファレンスセクションは、Analytics Acceleratorで使用可能な機能のリストです。
PGAAの保存場所を作成する方法の詳細については、
PGFS functions for Pipelines を参照してください。
テーブルファンクション#
pgaa.list_analytics_tables()#
PGAAによって管理されているすべての分析テーブルのリストを返します。構成、ストレージ統計、現在のレプリケーションステータスを含みます。
概要
SELECT * FROM pgaa.list_analytics_tables();
パラメーター
なし。
Return
Column |
Type |
Description |
|---|---|---|
nspoid |
OID |
テーブルを含む名前空間スキーマのOID。 |
reloid |
OID |
テーブルリレーションのOID。 |
schema_name |
TEXT |
Postgresスキーマの名前。 |
table_name |
TEXT |
分析テーブルの名前。 |
format |
pgaa.table_format |
保存形式`delta`、iceberg、または`parquet`。 |
object_storage_snapshot_size_bytes |
BIGINT |
オブジェクトストレージ内の最新のテーブルスナップショットのバイト単位のサイズ。 |
object_storage_total_size_bytes |
BIGINT |
オブジェクトストレージ内のこのテーブルのすべてのバージョン/ファイルのバイト単位の合計サイズ。 |
replication_status |
pgaa.replication_status |
データ移動の現在の状態 enabled、disabled、または`initial_offload` 。 PGD統合が必要です。 |
storage_location_name |
TEXT |
テーブルに関連付けられているPGFS格納場所の名前。 |
storage_location_path |
TEXT |
データが存在するストレージ場所内のパス。 |
catalog_name |
TEXT |
外部カタログの名前該当する場合。 |
catalog_namespace |
TEXT |
外部カタログ内の名前空間。 |
catalog_table |
TEXT |
外部カタログで定義されたテーブル名。 |
テーブルには、格納場所またはカタログを持つことができます。両方を持つことはできません。
カタログの詳細は、オブジェクトストレージへのカタログ管理オフロードまたはレプリケーションを実行する場合はレプリケーションターゲット、または Integrating with Iceberg catalogs の場合はソースカタログの場所を参照します。
pgaa.lakehouse_table_stats()#
特定の分析テーブルのストレージ統計を返します。最新のアクティブなスナップショットのサイズ、オブジェクトストレージに保存されているすべてのデータバージョン履歴データとログの合計累積サイズを含みます。
概要
SELECT * FROM pgaa.lakehouse_table_stats(table_name::regclass);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
relation |
REGCLASS |
調査する分析テーブルの名前またはOID。 |
Return
Column |
Type |
Description |
|---|---|---|
latest_snapshot_size |
BIGINT |
テーブルの最新のアクティブなスナップショットのバイト単位のサイズ。 |
total_size |
BIGINT |
メタデータ、トランザクションログ、履歴スナップショットを含む、オブジェクトストレージのテーブルに関連付けられているすべてのファイルのバイト単位の合計サイズ。 |
pgaa.test_storage_location()#
定義された保存場所の接続と構成をテストし、読み取りまたは書き込み権限を確認します。
概要
SELECT pgaa.test_storage_location(location_name, test_writes);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
name |
TEXT |
テストする保存場所の名前。 |
test_writes |
BOOLEAN |
`true`の場合、ファンクションは書き込み操作を試行して権限を確認します。 `false`の場合、読み取りのみがテストされます。 |
Return
テストが成功した場合はNULL
を返します。テストが失敗した場合、説明的なエラーメッセージを返します。
pgaa.pgaa_version()#
特定のビルドバージョン、ビルド日、Gitコミットハッシュを含むEDB Postgres Analytics Acceleratorのバージョン情報を返します。
pgaa.add_catalog#
SELECT pgaa.pgaa_version();
パラメーター
なし。
Return
現在のインストールの一意のGit識別子、セマンティックバージョン、ビルドタイムスタンプ、および一意のGit識別子を含む文字列。
カタログファンクション#
pgaa.add_catalog()#
新しいIcebergカタログをPGAAに登録します。この機能は、カタログがシステムに登録される前に、自動接続チェックを実行して、資格情報とアクセス可能性を検証します。
概要
SELECT pgaa.add_catalog(catalog_name, catalog_type, catalog_options::json);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
PGAA内のカタログの一意の名前。 |
catalog_type |
pgaa.catalog_type |
カタログタイプ。サポートされている値は、iceberg-rest Iceberg RESTカタログ、および`iceberg-s3tables`AWS S3テーブルです。 |
catalog_options |
JSON |
接続パラメーターと認証パラメーターを含むJSONオブジェクト。 |
使用するストレージに応じて、catalog_options
のJSONファイルは別のオプションを指定する必要があります。
RESTカタログの場合
{
"url": "https://your-catalog-endpoint.com",
"warehouse_name": "your_warehouse_name",
"warehouse": "your_warehouse_id",
"token": "your_secret_auth_token"
"danger_accept_invalid_certs": "false"
}
そこで
urlRESTカタログサービスのベースHTTP(S)エンドポイント。 -warehouse_nameウェアハウスIDに代わる人間が判読可能な代替。構成を簡単にするために一部のRESTプロバイダーでサポートされています。 -warehouseカタログサービス内の特定のウェアハウスの一意の識別子。 -danger_accept_invalid_certstrueに設定されている場合、PostgresはSSL証明書の検証をスキップします。これは、内部テストまたは自己署名証明書を使用する場合にのみ使用します。機密のパブリック接続には決して使用しないでください。
Snowflake Open Catalogのような一部のIceberg RESTカタログプロバイダーは、別のパラメーターを想定する場合があります。次のOAuthオプションを指定します。
{
"oauth2.grant_type": "client_credentials",
"oauth2.client_id": "oauth-client-id",
"oauth2.client_secret": "oauth-client-secret",
"oauth2.token_uri": "https://EXAMPLE-polaristest.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens",
"oauth2.scope": "PRINCIPAL_ROLE:read_only"
}
そこで
oauth2.grant_typeOAuth2フローを指定します。サービス間通信の最も一般的な値はclient_credentialsです。 -oauth2.client_idIDプロバイダーに登録されたアプリケーションの一意の識別子。 -oauth2.client_secretクライアントIDの認証に使用される秘密キー。 -oauth2.token_uriPGAAが資格情報を送信してアクセストークンを要求する完全なHTTP(S)エンドポイント。 -oauth2.scopeオプショナル クライアントがアクセスを要求している権限またはリソースのスペース区切りリスト。AWS S3テーブルの場合
{
"arn": "arn:aws:s3tables:us-east-1:1234567890:bucket/my-bucket",
"region": "us-east-1"
}
そこで
arnS3テーブルバケットの一意の識別子であるAmazonリソースネームARNを指定します。 -regionS3テーブルバケットが存在するAWSデータセンターの物理的な場所を指定します。
Return
成功するとカタログの名前を返します。
pgaa.update_catalog()#
既存のIcebergカタログの構成オプションJSONオブジェクトを更新します。
pgaa.add_catalog()
と同様に、このファンクションは検証チェックを実行して、変更を適用する前に新しい接続パラメーターが機能していることを確認します。
概要
SELECT * FROM pgaa.update_catalog(catalog_name, new_options::json);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
PGAA内のカタログの一意の名前。 |
new_options |
JSON |
更新された接続パラメーターと認証パラメーターを含むJSONオブジェクト。 |
各カタログタイプに必要なJSONフィールドの詳細については、 pgaa.add_catalog() を参照してください。
Return
更新が成功すると、カタログの名前を返します。
例
OAuth2トークンをローテーションします。
SELECT * FROM pgaa.lakehouse.update_catalog(
marketing_lakehouse,
{
"url": "https://iceberg.example.com",
"oauth2.client_id": "pgaa_service_user",
"oauth2.client_secret": "new_secure_secret_2026",
"oauth2.token_uri": "https://auth.example.com/token"
}::json
);
pgaa.delete_catalog()#
登録されたカタログをデータベースから削除します。偶発的なデータの損失を防ぐため、カタログで管理されているテーブルがまだ存在する場合、このファンクションではカスケードパラメーターを明示的にtrueに設定する必要があります。
概要
SELECT * FROM pgaa.delete_catalog(catalog_name, cascade := true);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
削除するカタログの名前。 |
cascade |
BOOLEAN |
`true`の場合、PGAAは、カタログエントリを削除する前に、このカタログで管理されているすべてのローカルテーブル定義を自動的に削除します。デフォルトは`false`です。 |
Return
正常に完了すると、削除されたカタログの名前を返します。
pgaa.list_catalogs()#
システム内に登録されているすべてのカタログのリストを返します。接続構成、メタデータ同期タイムスタンプ、現在の動作ステータスを含みます。
概要
SELECT * FROM pgaa.list_catalogs();
パラメーター
なし。
Return
Column |
Type |
Description |
|---|---|---|
name |
TEXT |
カタログの名前。 |
type |
pgaa.catalog_type |
カタログタイプ。サポートされている値は、iceberg-rest Iceberg RESTカタログ、および`iceberg-s3tables`AWS S3テーブルです。 |
options |
JSON |
このカタログに使用される接続パラメーターURL、ARNなど。 |
status |
pgaa.catalog_status |
カタログの現在のヘルス detached、attached、refresh_retry、または`refresh_failed` 。 |
created_at |
TIMESTAMPTZ |
カタログが最初に登録されたときのタイムスタンプ。 |
last_refreshed_at |
TIMESTAMPTZ |
PGAAが最後にこのカタログからメタデータを正常に同期した時間。 |
pgaa.import_catalog()#
ワンタイムスキャンを実行し、登録済みのIcebergカタログからPostgresにテーブル定義のインポートを実行します。このファンクションは、PGAAがリモートテーブルを照会するために必要なローカルメタデータを作成します。これは手動で1回限りのインポートであり、自動で継続的な同期は有効になりません。
概要
SELECT pgaa.import_catalog(catalog_name, namespace_filter);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
インポートする以前に登録したカタログの名前。 |
namespace_filter |
VARCHAR |
指定した場合、この特定のIceberg名前空間内のテーブルのみがインポートされます。省略または`NULL`の場合、すべての名前空間のすべてのテーブルがインポートされます。デフォルトは`NULL`です。 |
Return
なし。
pgaa.attach_catalog()#
以前に登録したIcebergカタログの継続的なメタデータの同期を有効にします pgaa.add_catalog() を使用接続されると、PGAAはリモートカタログの変更を自動的に監視し、それに応じてローカルPostgresメタデータを更新します。ポーリングレート構成については、 カタログの同期 を参照してください。
概要
SELECT pgaa.attach_catalog(catalog_name);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
同期を開始する登録済みカタログの名前。 |
Return
なし。
pgaa.detach_catalog()#
登録されたIcebergカタログの継続的なメタデータの同期を停止し、detached
状態に移動します。 cascade がtrue
の場合、デタッチする前にカタログによって管理されているすべてのテーブルを削除します。
cascade がfalse
の場合、テーブルはデータベースに残りますが、同期は停止します。
概要
SELECT * FROM pgaa.detach_catalog(catalog_name, cascade := true);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
切り離す登録済みカタログの名前。 |
cascade |
BOOLEAN |
オプショナル。 `true`の場合、PGAAは、デタッチする前に、このカタログに関連付けられているすべてのローカルテーブル定義を自動的に削除します。デフォルトは`false`です。 |
Return
ファンクションは、デタッチされるカタログのpgaa.catalog
システムテーブルから行を結果ます。
Column |
Type |
Description |
|---|---|---|
name |
TEXT |
分離されたカタログの名前。 |
type |
pgaa.catalog_type |
カタログタイプ。 |
status |
pgaa.catalog_status |
新しいステータスは`detached`になります。 |
pgaa.test_catalog()#
登録されたIcebergカタログの接続と構成をテストします。このファンクションは、 Postgresインスタンスがリモートカタログエンドポイントと通信できることを確認し、オプションで提供された資格情報に書き込み権限があることを検証します。
概要
SELECT pgaa.test_catalog(catalog_name, test_writes:=true);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
name |
TEXT |
テストする登録済みカタログの名前。 |
text_writes |
BOOLEAN |
`true`の場合、ファンクションはカタログメタデータサービスへの書き込み操作を試行して、権限を確認します。 `false`の場合、読み取り権限のみがテストされます。 |
Return
テストが成功した場合はNULL
を返します。テストが失敗した場合、説明的なエラーメッセージを返します。
pgaa.list_catalog_tables()#
登録されたIcebergカタログで使用可能なすべてのテーブルとビューのリストを返します。この機能を使用すると、最初にテーブルをローカルデータベースにインポートまたは接続することなく、リモートカタログのコンテンツを探索できます。
概要
SELECT * FROM pgaa.list_catalog_tables(catalog_name, namespace_filter);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
TEXT |
探索する登録済みカタログの名前。 |
namespace_filter |
TEXT |
提供する場合、フィルターするIceberg名前空間スキーマを指定します。省略または`NULL`の場合、カタログ内のすべてのテーブルが返されます。デフォルトは`NULL`です。 |
Return
Column |
Type |
Description |
|---|---|---|
schema_name |
TEXT |
リモートのIceberg名前空間/スキーマ。 |
table_name |
TEXT |
テーブルまたはビューの名前。 |
pgaa.drop_catalog_tables()#
特定のIcebergカタログによって管理されているすべてのローカルPostgresテーブルとビュー定義を削除します。cascade
がtrue
の場合、依存オブジェクトを含みます。リモートのIcebergカタログのテーブルには影響しません。
概要
SELECT * FROM pgaa.drop_catalog_tables(catalog_name, cascade := true);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
catalog_name |
VARCHAR |
管理テーブルが削除される登録済みカタログの名前。 |
cascade |
BOOLEAN |
`true`の場合、ファンクションはこれらのテーブルに依存するオブジェクトを自動的に削除します。デフォルトは`false`です。 |
Return
Column |
Type |
Description |
|---|---|---|
schema_name |
TEXT |
テーブルが存在したローカルPostgresスキーマ。 |
table_name |
TEXT |
削除されたローカルテーブルの名前。 |
Sparkファンクション#
pgaa.spark_sql()#
構成済みのSpark Connectエンドポイントを介してPostgresクラスターでSpark SQLクエリーを直接実行します。これにより、Postgresで使用できないIceberg圧縮ルーチンまたはSparkファンクションを実行できます。
使用可能なプロシージャーのリストについては、 Spark procedures を参照してください。
このファンクションを実行するには、構成パラメーターpgaa.spark_connect_url
を設定して、使用可能なSpark
Connectサービスをポイントする必要があります。
概要
単一のカタログの場合
SELECT pgaa.spark_sql(query, catalog_name);
複数のカタログの場合
SELECT pgaa.spark_sql(query, ARRAY[catalog1, catalog2]);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
query |
TEXT |
実行するSpark SQLステートメント。 |
catalog |
TEXT or TEXT[] |
クエリーに使用する単一のカタログ名、またはカタログ名の配列。 |
Return
JSONオブジェクトとしてフォーマットされたSparkクエリの結果セット。
例
rewrite_data_files
Sparkタスクを介してメタデータのオーバーヘッドを削減します。
SELECT pgaa.spark_sql($$
CALL preexisting.system.rewrite_data_files(
table => "preexisting"."ns-1"."table-1",
strategy => sort,
sort_order => value DESC,
options => map(rewrite-all, true)
)
$$);
pgaa.execute_compaction()#
圧縮を実行して、分析Icebergテーブルのパフォーマンスとストレージ効率を向上させます。
pgaa.spark_connect_url 構成パラメーターを介してSpark
Connectを構成する必要があります。
概要
SELECT pgaa.execute_compaction(table_name::regclass, settings::json);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
relation |
REGCLASS |
圧縮する分析テーブルの名前またはOID。 |
settings |
JSON |
現在サポートされていません。圧縮動作を定義するオプションのJSONオブジェクト。 |
注釈
パラメーター`settings` は現在サポートされていません。代わりに、 pgaa.spark_sql() を使用し、クラスターでSparkクエリを直接実行します。
Return
なし。
例
SELECT pgaa.execute_compaction(lakehouse.inventory_iceberg::regclass);
バックグラウンドタスクファンクション#
pgaa.launch_task()#
分析デルタテーブルのバックグラウンドメンテナンスタスクをスケジュールします。
概要
SELECT pgaa.launch_task(
table_name::regclass,
task_type,
task_options::jsonb,
scheduled_at::timestamp
);
パラメーター
Parameter |
Type |
Description |
|---|---|---|
table_name |
REGCLASS |
タスクを実行する分析テーブルの名前またはOID。 |
task_type |
TEXT |
メンテナンスオペレーション compaction、zorder、vacuum、または`purge`。 |
task_options |
JSONB |
タスクタイプに固有の構成以下を参照してください。 |
scheduled_at |
TIMESTAMP |
指定された場合、タスクはこの時間まで待機して実行されます。デフォルトは`NULL`です。 |
JSONB task_options の値は、各task_type によって異なります。
columns を必要とするzorder と、 storage_location
とpath の両方を必要とするpurge
を除き、すべてのオプションはオプショナル。
compaction小さなファイルを大きなファイルにマージして、分析スキャンを高速化します。使用可能なtask_optionsは次のとおりです。
{
"target_size": 536870912,
"preserve_insertion_order": true,
"max_concurrent_tasks": 10,
"max_spill_size": 2147483648,
"min_commit_interval": 60
}
そこで
target_size出力ファイルのサイズをバイト単位で指定します。 -preserve_insertion_order行の既存のソート順を維持するかどうか。 -max_concurrent_tasksエグゼキューターが実行できる並列タスクの数を制限します。 -max_spill_sizeプロセス中にディスクに流出できる最大データサイズをバイト単位で設定します。 -min_commit_intervalデルタログの更新をコミットするまでの最小待機時間を秒単位で設定します。zorder複数の列にわたってデータを再編成して、これらの列にフィルターを使用したクエリの「データスキップ」を向上させるクラスタリング手法。使用可能なtask_optionsは次のとおりです。
{
"columns": ["customer_id", "transaction_date"],
"target_size": 1073741824,
"preserve_insertion_order": false,
"max_concurrent_tasks": 4,
"max_spill_size": 2147483648,
"min_commit_interval": 30
}
そこで
columns必須 Zオーダーに使用される列を表す文字列の配列。 -target_size出力ファイルのサイズをバイト単位で指定します。 -preserve_insertion_order行の既存のソート順を維持するかどうか。 -max_concurrent_tasksエグゼキューターが実行できる並列タスクの数を制限します。 -max_spill_sizeプロセス中にディスクに流出できる最大データサイズをバイト単位で設定します。 -min_commit_intervalデルタログの更新をコミットするまでの最小待機時間を秒単位で設定します。vacuumデルタトランザクションログによって参照されなくなった古いデータファイルを削除し、オブジェクトストレージの領域を解放します。使用可能なtask_optionsは次のとおりです。
{
"retention_period": "168 hours",
"dry_run": false,
"enforce_retention_duration": true
}
そこで
retention_period参照されていないファイルが削除の対象となる年齢を定義します。 -dry_runtrueの場合、削除されるファイルを計算およびログに記録しますが、削除は実行しません。 -enforce_retention_durationtrueの場合、タスクはシステムのグローバル最小安全制限に対してretention_periodを検証します。purge特定のストレージパスからデータを明示的に削除します。使用可能なtask_optionsは次のとおりです。
{
"storage_location": "s3_main",
"path": "archive/2023/temp/"
}
そこで
storage_location必須。保存場所の名前。 -path完全に削除する必要がある保存場所内の相対ディレクトリパスまたはファイル接頭辞。
Return
タスクの一意のタスクID。
pgaa.background_task
テーブルと提供されたタスクIDを照会することにより、タスクのステータスを確認できます。
例
過去7日間より前の古いデータファイルを削除します。
SELECT pgaa.launch_task(
sales.transactions,
vacuum,
{"retention_period": "7 days", "dry_run": false}::jsonb
);
圧縮を実行します
SELECT pgaa.launch_task(
telemetry.logs,
compaction,
{
"target_size": 536870912,
"max_concurrent_tasks": 2
}::jsonb
);
列
regionおよびcustomer_idでクラスタリングすることによりデータ行を再編成します。
SELECT pgaa.launch_task(
crm.customers,
zorder,
{
"columns": ["region", "customer_id"],
"target_size": 1073741824
}::jsonb
);
pgaa.execute_compaction()#
圧縮を実行して、分析Icebergテーブルのパフォーマンスとストレージ効率を向上させます。詳細は、 Sparkファンクション を参照してください。