Functions
=========

リファレンスセクションは、Analytics
Acceleratorで使用可能な機能のリストです。

PGAAの保存場所を作成する方法の詳細については、
 
`PGFS functions for Pipelines <https://www.enterprisedb.com/docs/edb-postgres-ai/latest/ai-factory/pipeline/pgfs/functions>`_ を参照してください。

テーブルファンクション
----------------------

pgaa.list_analytics_tables()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

PGAAによって管理されているすべての分析テーブルのリストを返します。構成、ストレージ統計、現在のレプリケーションステータスを含みます。

**概要**

.. code:: sql

   SELECT * FROM pgaa.list_analytics_tables();

**パラメーター**

なし。

**Return**

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `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`,外部カタログで定義されたテーブル名。

テーブルには、格納場所またはカタログを持つことができます。両方を持つことはできません。

カタログの詳細は、オブジェクトストレージへのカタログ管理オフロードまたはレプリケーションを実行する場合はレプリケーションターゲット、または
:ref:`Integrating with Iceberg catalogs <Integrating with Iceberg catalogs>` の場合はソースカタログの場所を参照します。

pgaa.lakehouse_table_stats()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

特定の分析テーブルのストレージ統計を返します。最新のアクティブなスナップショットのサイズ、オブジェクトストレージに保存されているすべてのデータバージョン履歴データとログの合計累積サイズを含みます。

**概要**

.. code:: sql

   SELECT * FROM pgaa.lakehouse_table_stats(table_name::regclass);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `relation`,`REGCLASS`,調査する分析テーブルの名前またはOID。

**Return**

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `latest_snapshot_size`,`BIGINT`,テーブルの最新のアクティブなスナップショットのバイト単位のサイズ。
  `total_size`,`BIGINT`,メタデータ、トランザクションログ、履歴スナップショットを含む、オブジェクトストレージのテーブルに関連付けられているすべてのファイルのバイト単位の合計サイズ。

pgaa.test_storage_location()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

定義された保存場所の接続と構成をテストし、読み取りまたは書き込み権限を確認します。

**概要**

.. code:: sql

   SELECT pgaa.test_storage_location(location_name, test_writes);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,`TEXT`,テストする保存場所の名前。
  `test_writes`,`BOOLEAN`,`true`の場合、ファンクションは書き込み操作を試行して権限を確認します。 `false`の場合、読み取りのみがテストされます。

**Return**

テストが成功した場合は\ ``NULL``
を返します。テストが失敗した場合、説明的なエラーメッセージを返します。

pgaa.pgaa_version()
^^^^^^^^^^^^^^^^^^^

特定のビルドバージョン、ビルド日、Gitコミットハッシュを含むEDB Postgres
Analytics Acceleratorのバージョン情報を返します。

pgaa.add_catalog
^^^^^^^^^^^^^^^^

.. code:: sql

   SELECT pgaa.pgaa_version();

**パラメーター**

なし。

**Return**

現在のインストールの一意のGit識別子、セマンティックバージョン、ビルドタイムスタンプ、および一意のGit識別子を含む文字列。

カタログファンクション
----------------------

.. _pgaa.add_catalog-1:

pgaa.add_catalog()
^^^^^^^^^^^^^^^^^^

新しいIcebergカタログをPGAAに登録します。この機能は、カタログがシステムに登録される前に、自動接続チェックを実行して、資格情報とアクセス可能性を検証します。

**概要**

.. code:: sql

   SELECT pgaa.add_catalog(catalog_name, catalog_type, catalog_options::json);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `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カタログの場合

.. code:: json

       {
       "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"
       }

そこで

- ``url`` RESTカタログサービスのベースHTTP(S)エンドポイント。 -
  ``warehouse_name``
  ウェアハウスIDに代わる人間が判読可能な代替。構成を簡単にするために一部のRESTプロバイダーでサポートされています。
  - ``warehouse`` カタログサービス内の特定のウェアハウスの一意の識別子。
  - ``danger_accept_invalid_certs`` ``true``
  に設定されている場合、PostgresはSSL証明書の検証をスキップします。これは、内部テストまたは自己署名証明書を使用する場合にのみ使用します。機密のパブリック接続には決して使用しないでください。

Snowflake Open Catalogのような一部のIceberg
RESTカタログプロバイダーは、別のパラメーターを想定する場合があります。次のOAuthオプションを指定します。

.. code:: json

       {
       "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_type``
  OAuth2フローを指定します。サービス間通信の最も一般的な値は\ ``client_credentials``
  です。 - ``oauth2.client_id``
  IDプロバイダーに登録されたアプリケーションの一意の識別子。 -
  ``oauth2.client_secret`` クライアントIDの認証に使用される秘密キー。 -
  ``oauth2.token_uri``
  PGAAが資格情報を送信してアクセストークンを要求する完全なHTTP(S)エンドポイント。
  - ``oauth2.scope`` オプショナル
  クライアントがアクセスを要求している権限またはリソースのスペース区切りリスト。

- AWS S3テーブルの場合

.. code:: json

       {
       "arn": "arn:aws:s3tables:us-east-1:1234567890:bucket/my-bucket",
       "region": "us-east-1"
       }

そこで

- ``arn``
  S3テーブルバケットの一意の識別子であるAmazonリソースネームARNを指定します。
  - ``region``
  S3テーブルバケットが存在するAWSデータセンターの物理的な場所を指定します。

**Return**

成功するとカタログの名前を返します。

pgaa.update_catalog()
^^^^^^^^^^^^^^^^^^^^^

既存のIcebergカタログの構成オプションJSONオブジェクトを更新します。
``pgaa.add_catalog()``
と同様に、このファンクションは検証チェックを実行して、変更を適用する前に新しい接続パラメーターが機能していることを確認します。

**概要**

.. code:: sql

   SELECT * FROM pgaa.update_catalog(catalog_name, new_options::json);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`VARCHAR`,PGAA内のカタログの一意の名前。
  `new_options`,`JSON`,更新された接続パラメーターと認証パラメーターを含むJSONオブジェクト。

各カタログタイプに必要なJSONフィールドの詳細については、
:ref:`pgaa.add_catalog() <pgaa.add_catalog()>` を参照してください。

**Return**

更新が成功すると、カタログの名前を返します。

**例**

OAuth2トークンをローテーションします。

.. code:: sql

   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に設定する必要があります。

**概要**

.. code:: sql

   SELECT * FROM pgaa.delete_catalog(catalog_name, cascade := true);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`VARCHAR`,削除するカタログの名前。
  `cascade`,`BOOLEAN`,`true`の場合、PGAAは、カタログエントリを削除する前に、このカタログで管理されているすべてのローカルテーブル定義を自動的に削除します。デフォルトは`false`です。

**Return**

正常に完了すると、削除されたカタログの名前を返します。

pgaa.list_catalogs()
^^^^^^^^^^^^^^^^^^^^

システム内に登録されているすべてのカタログのリストを返します。接続構成、メタデータ同期タイムスタンプ、現在の動作ステータスを含みます。

**概要**

.. code:: sql

   SELECT * FROM pgaa.list_catalogs();

**パラメーター**

なし。

**Return**

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `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回限りのインポートであり、自動で継続的な同期は有効になりません。

**概要**

.. code:: sql

   SELECT pgaa.import_catalog(catalog_name, namespace_filter);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`VARCHAR`,インポートする以前に登録したカタログの名前。
  `namespace_filter`,`VARCHAR`,指定した場合、この特定のIceberg名前空間内のテーブルのみがインポートされます。省略または`NULL`の場合、すべての名前空間のすべてのテーブルがインポートされます。デフォルトは`NULL`です。

**Return**

なし。

pgaa.attach_catalog()
^^^^^^^^^^^^^^^^^^^^^

以前に登録したIcebergカタログの継続的なメタデータの同期を有効にします
:ref:`pgaa.add_catalog() <pgaa.add_catalog()>` を使用接続されると、PGAAはリモートカタログの変更を自動的に監視し、それに応じてローカルPostgresメタデータを更新します。ポーリングレート構成については、
:ref:`カタログの同期 <カタログの同期>` を参照してください。

**概要**

.. code:: sql

   SELECT pgaa.attach_catalog(catalog_name);    

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`VARCHAR`,同期を開始する登録済みカタログの名前。

**Return**

なし。

pgaa.detach_catalog()
^^^^^^^^^^^^^^^^^^^^^

登録されたIcebergカタログの継続的なメタデータの同期を停止し、\ ``detached``
状態に移動します。 ``cascade`` が\ ``true``
の場合、デタッチする前にカタログによって管理されているすべてのテーブルを削除します。
``cascade`` が\ ``false``
の場合、テーブルはデータベースに残りますが、同期は停止します。

**概要**

.. code:: sql

   SELECT * FROM pgaa.detach_catalog(catalog_name, cascade := true);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`VARCHAR`,切り離す登録済みカタログの名前。
  `cascade`,`BOOLEAN`,オプショナル。 `true`の場合、PGAAは、デタッチする前に、このカタログに関連付けられているすべてのローカルテーブル定義を自動的に削除します。デフォルトは`false`です。

**Return**

ファンクションは、デタッチされるカタログの\ ``pgaa.catalog``
システムテーブルから行を結果ます。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,`TEXT`,分離されたカタログの名前。
  `type`,`pgaa.catalog_type`,カタログタイプ。
  `status`,`pgaa.catalog_status`,新しいステータスは`detached`になります。

pgaa.test_catalog()
^^^^^^^^^^^^^^^^^^^

登録されたIcebergカタログの接続と構成をテストします。このファンクションは、
Postgresインスタンスがリモートカタログエンドポイントと通信できることを確認し、オプションで提供された資格情報に書き込み権限があることを検証します。

**概要**

.. code:: sql

   SELECT pgaa.test_catalog(catalog_name, test_writes:=true);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,`TEXT`,テストする登録済みカタログの名前。
  `text_writes`,`BOOLEAN`,`true`の場合、ファンクションはカタログメタデータサービスへの書き込み操作を試行して、権限を確認します。 `false`の場合、読み取り権限のみがテストされます。

**Return**

テストが成功した場合は\ ``NULL``
を返します。テストが失敗した場合、説明的なエラーメッセージを返します。

pgaa.list_catalog_tables()
^^^^^^^^^^^^^^^^^^^^^^^^^^

登録されたIcebergカタログで使用可能なすべてのテーブルとビューのリストを返します。この機能を使用すると、最初にテーブルをローカルデータベースにインポートまたは接続することなく、リモートカタログのコンテンツを探索できます。

**概要**

.. code:: sql

   SELECT * FROM pgaa.list_catalog_tables(catalog_name, namespace_filter);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`TEXT`,探索する登録済みカタログの名前。
  `namespace_filter`,`TEXT`,提供する場合、フィルターするIceberg名前空間スキーマを指定します。省略または`NULL`の場合、カタログ内のすべてのテーブルが返されます。デフォルトは`NULL`です。

**Return**

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `schema_name`,`TEXT`,リモートのIceberg名前空間/スキーマ。
  `table_name`,`TEXT`,テーブルまたはビューの名前。

pgaa.drop_catalog_tables()
^^^^^^^^^^^^^^^^^^^^^^^^^^

特定のIcebergカタログによって管理されているすべてのローカルPostgresテーブルとビュー定義を削除します。\ ``cascade``
が\ ``true``
の場合、依存オブジェクトを含みます。リモートのIcebergカタログのテーブルには影響しません。

**概要**

.. code:: sql

   SELECT * FROM pgaa.drop_catalog_tables(catalog_name, cascade := true);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `catalog_name`,`VARCHAR`,管理テーブルが削除される登録済みカタログの名前。
  `cascade`,`BOOLEAN`,`true`の場合、ファンクションはこれらのテーブルに依存するオブジェクトを自動的に削除します。デフォルトは`false`です。

**Return**

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `schema_name`,`TEXT`,テーブルが存在したローカルPostgresスキーマ。
  `table_name`,`TEXT`,削除されたローカルテーブルの名前。

Sparkファンクション
-------------------

pgaa.spark_sql()
^^^^^^^^^^^^^^^^

構成済みのSpark Connectエンドポイントを介してPostgresクラスターでSpark
SQLクエリーを直接実行します。これにより、Postgresで使用できないIceberg圧縮ルーチンまたはSparkファンクションを実行できます。

使用可能なプロシージャーのリストについては、
`Spark procedures <https://iceberg.apache.org/docs/latest/spark-procedures/>`_ を参照してください。

このファンクションを実行するには、構成パラメーター\ ``pgaa.spark_connect_url``
を設定して、使用可能なSpark
Connectサービスをポイントする必要があります。

**概要**

単一のカタログの場合

.. code:: sql

   SELECT pgaa.spark_sql(query, catalog_name);

複数のカタログの場合

.. code:: sql

   SELECT pgaa.spark_sql(query, ARRAY[catalog1, catalog2]);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `query`,`TEXT`,実行するSpark SQLステートメント。
  `catalog`,`TEXT` or `TEXT[]`,クエリーに使用する単一のカタログ名、またはカタログ名の配列。

**Return**

JSONオブジェクトとしてフォーマットされたSparkクエリの結果セット。

**例**

``rewrite_data_files``
Sparkタスクを介してメタデータのオーバーヘッドを削減します。

.. code:: sql

   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を構成する必要があります。

**概要**

.. code:: sql

   SELECT pgaa.execute_compaction(table_name::regclass, settings::json);

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `relation`,`REGCLASS`,圧縮する分析テーブルの名前またはOID。
  `settings`,`JSON`,現在サポートされていません。圧縮動作を定義するオプションのJSONオブジェクト。

..  Note::
   パラメーター`settings` は現在サポートされていません。代わりに、 :ref:`pgaa.spark_sql() <pgaa.spark_sql()>`  を使用し、クラスターでSparkクエリを直接実行します。

**Return**

なし。

**例**

.. code:: sql

   SELECT pgaa.execute_compaction(lakehouse.inventory_iceberg::regclass);

バックグラウンドタスクファンクション
------------------------------------

pgaa.launch_task()
^^^^^^^^^^^^^^^^^^

分析デルタテーブルのバックグラウンドメンテナンスタスクをスケジュールします。

**概要**

.. code:: sql

   SELECT pgaa.launch_task(
       table_name::regclass, 
       task_type, 
       task_options::jsonb, 
       scheduled_at::timestamp
   );

**パラメーター**

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `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``
  は次のとおりです。

.. code:: json

       {
       "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``
  は次のとおりです。

.. code:: json

       {
       "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``
  は次のとおりです。

.. code:: json

       {
       "retention_period": "168 hours",
       "dry_run": false,
       "enforce_retention_duration": true
       }

そこで

- ``retention_period``
  参照されていないファイルが削除の対象となる年齢を定義します。 -
  ``dry_run`` ``true``
  の場合、削除されるファイルを計算およびログに記録しますが、削除は実行しません。
  - ``enforce_retention_duration`` ``true``
  の場合、タスクはシステムのグローバル最小安全制限に対して\ ``retention_period``
  を検証します。

- ``purge``
  特定のストレージパスからデータを明示的に削除します。使用可能な\ ``task_options``
  は次のとおりです。

.. code:: json

       {
       "storage_location": "s3_main",
       "path": "archive/2023/temp/"
       }

そこで

- ``storage_location`` 必須。保存場所の名前。 - ``path``
  完全に削除する必要がある保存場所内の相対ディレクトリパスまたはファイル接頭辞。

**Return**

タスクの一意のタスクID。

``pgaa.background_task``
テーブルと提供されたタスクIDを照会することにより、タスクのステータスを確認できます。

**例**

- 過去7日間より前の古いデータファイルを削除します。

.. code:: sql

       SELECT pgaa.launch_task(
           sales.transactions, 
           vacuum, 
           {"retention_period": "7 days", "dry_run": false}::jsonb
       );

- 圧縮を実行します

.. code:: sql

       SELECT pgaa.launch_task(
           telemetry.logs, 
           compaction, 
           {
               "target_size": 536870912, 
               "max_concurrent_tasks": 2
           }::jsonb
       );

- 列\ ``region`` および\ ``customer_id``
  でクラスタリングすることによりデータ行を再編成します。

.. code:: sql

       SELECT pgaa.launch_task(
           crm.customers, 
           zorder, 
           {
               "columns": ["region", "customer_id"], 
               "target_size": 1073741824
           }::jsonb
       );

.. _pgaa.execute_compaction-1:

pgaa.execute_compaction()
^^^^^^^^^^^^^^^^^^^^^^^^^

圧縮を実行して、分析Icebergテーブルのパフォーマンスとストレージ効率を向上させます。詳細は、
:ref:`Sparkファンクション <Sparkファンクション>` を参照してください。
