Interrogation d’une table dans Snowflake Open Catalog à l’aide de Snowflake

Pour interroger une table enregistrée dans Snowflake Open Catalog à l’aide de Snowflake, vous pouvez créer une table Apache Iceberg™ qui utilise un catalogue externe.

Le tableau représente la table Iceberg dans Snowflake Open Catalog et fournit un accès en lecture seule.

Conditions préalables

Avant de commencer, vous avez besoin des éléments suivants :

  • Une table Iceberg enregistrée auprès d”Open Catalog.

  • Une connexion de service que Snowflake peut utiliser pour se connecter à Open Catalog. Vous pouvez utiliser une connexion de service existante pour laquelle vous avez configuré des rôles et des privilèges, ou Configuration d’une connexion de service pour Snowflake. Si vous configurez une nouvelle connexion de service, vous devez également configurer le contrôle d’accès pour celle-ci.

Étape 1 : Créer un volume externe dans Snowflake

Si vous n’en avez pas déjà un, commencez par créer un volume externe dans Snowflake qui donne accès à l’emplacement de stockage Cloud où vous stockez vos données de table et vos métadonnées.

Suivez les instructions relatives à votre service de stockage dans le Cloud :

Étape 2 : Créer une intégration de catalogue pour Open Catalog

Utilisez ensuite la commande CREATE CATALOG INTEGRATION pour créer une intégration de catalogue dans Snowflake qui utilise OAuth pour se connecter à Open Catalog à l’aide de vos identifiants de connexion de service. Le paramètre CATALOG_NAMESPACE est facultatif. Toutefois, si vous ne le spécifiez pas avec l’intégration du catalogue, vous devez le faire lorsque vous créez une table gérée en externe. Cette section comprend les exemples suivants :

Exemple : Intégration d’un catalogue utilisant l’internet public

CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
  CATALOG_SOURCE = POLARIS
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/polaris/api/catalog'
    CATALOG_NAME = 'myOpenCatalogName'
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_CLIENT_ID = 'my-client-id'
    OAUTH_CLIENT_SECRET = 'my-client-secret'
    OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
  )
  ENABLED = TRUE;
Copy

Note

Exemple : Intégration d’un catalogue utilisant une adresse IP privée

CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
  CATALOG_SOURCE = POLARIS
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://<open_catalog_privatelink_account_url>/polaris/api/catalog'
    CATALOG_API_TYPE = PRIVATE
    CATALOG_NAME = 'myOpenCatalogName'
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_CLIENT_ID = 'my-client-id'
    OAUTH_CLIENT_SECRET = 'my-client-secret'
    OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
  )
  ENABLED = TRUE;
Copy

Note

Pour <open_catalog_privatelink_account_url>, entrez l’une des valeurs suivantes :

  • Compte PrivateLink : URL

  • Compte PrivateLink sans région : URL

Pour obtenir ces valeurs, récupérez les paramètres de votre compte Open Catalog pour la connectivité privée. Pour plus de détails, consultez les instructions relatives à la plateforme Cloud où est hébergé votre compte Open Catalog :

Étape 3 : Créer une table gérée en externe

Créez une table Iceberg dans Snowflake à l’aide du volume externe et de l’intégration de catalogue que vous avez précédemment configurés.

Pour CATALOG_TABLE_NAME, spécifiez le nom de la table tel qu’il apparaît dans Open Catalog.

CREATE ICEBERG TABLE open_catalog_iceberg_table
  CATALOG = 'open_catalog_int'
  EXTERNAL_VOLUME = 'my_external_volume'
  CATALOG_TABLE_NAME = 'my_iceberg_table';
Copy

Vous pouvez éventuellement activer les actualisations automatiques des métadonnées de la table en spécifiant AUTO_REFRESH = TRUE. Pour plus d’informations, voir Actualisation automatique des tables Apache Iceberg™. Si vous n’avez pas spécifié de CATALOG_NAMESPACE avec l’intégration de catalogue que vous avez créée à l’étape précédente, vous devez spécifier ce paramètre pour définir un espace de noms de catalogue pour la table.

Note

Pour récupérer une liste de tables ou d’espaces de noms dans votre catalogue distant, vous pouvez utiliser les fonctions suivantes :

Étape 4 : Interroger la table à l’aide de Snowflake

Vous pouvez désormais utiliser Snowflake pour interroger la table dans Open Catalog. Vous pouvez également joindre les résultats de la requête à d’autres tables Snowflake.

SELECT id, date
  FROM open_catalog_iceberg_table
  LIMIT 10;
Copy