Création de tables Apache Iceberg™ dynamiques¶
Cette rubrique explique comment créer les types de tables dynamiques suivants et présente les considérations associées :
Tables dynamiques qui lisent à partir de tables Apache Iceberg™ gérées par Snowflake comme table de base.
Tables Iceberg dynamiques qui stockent les résultats de la requête au format de table Iceberg.
La table de base Iceberg gérée par Snowflake peut être soit une table standard Iceberg gérée par Snowflake ou une table Iceberg dynamique gérée par Snowflake.
Création de tables dynamiques qui lisent depuis des tables Iceberg¶
Les tables dynamiques qui lisent depuis une table Iceberg gérée par Snowflake sont utiles si vous souhaitez que vos pipelines fonctionnent sur des données dans une table Iceberg gérée par Snowflake ou si vous souhaitez que vos données traitées soient interrogeables à partir d’autres moteurs, comme l’utilisation du SDK d’Apache Iceberg avec Spark.
Créer une table dynamique à partir d’une table Iceberg est similaire à la création d’une table dynamique à partir d’une table standard. Pour ce faire, exécutez l’instruction CREATE DYNAMIC TABLE SQL comme vous le feriez pour une table standard.
Création de tables Iceberg dynamiques¶
Les tables Iceberg dynamiques combinent les avantages des tables dynamiques et des tables Iceberg gérées par Snowflake, offrant des fonctionnalités telles que la gestion du stockage cloud externe, la transformation automatisée des données et l’optimisation des performances.
Les tables Iceberg dynamiques s’intègrent aux data lakes, qui vous permettent de stocker des données dans un stockage Cloud externe tel que AWS S3 ou Azure Blob Storage, tout en étant gérées par Snowflake. Ces tables prennent en charge les opérations ACID, l’évolution du schéma, le partitionnement masqué et les instantanés de table.
La transformation automatisée des données avec des tables Iceberg dynamiques utilise des SQL déclaratifs pour définir l’état final souhaité sans gérer d’étapes intermédiaires. Snowflake gère l’orchestration, la planification et l’actualisation des transformations de données en fonction de vos objectifs spécifiés d’actualisation des données.
Les performances sont optimisées grâce au traitement incrémentiel, qui traite uniquement les données modifiées pour améliorer les performances et réduire les coûts par rapport aux actualisations complètes des données. De plus, vous pouvez passer du traitement par lots aux données en continu à l’aide d’une simple commande, offrant ainsi une flexibilité dans les flux de travail de traitement des données.
Voici quelques exemples de cas d’utilisation de tables Iceberg dynamiques :
Intégration Data Lake : vous pouvez stocker de grands ensembles de données à faibles coûts tout en effectuant des transformations et des analyses dans Snowflake, en utilisant le format Iceberg pour une interrogation et une gestion efficaces.
Définition de pipelines de transformation continue des données : en utilisant des tables dynamiques, vous pouvez garantir que les données sont toujours à jour sans intervention manuelle et gérer efficacement les flux de données à grande vitesse avec un traitement incrémentiel.
Pour créer une table Iceberg dynamique, exécutez l’instruction CREATE DYNAMIC ICEBERG TABLE SQL. Par exemple, pour créer une table Iceberg dynamique intitulée product
qui lit depuis my_iceberg_table
, utilisez la syntaxe suivante :
CREATE DYNAMIC ICEBERG TABLE product (date TIMESTAMP_NTZ, id NUMBER, content STRING)
TARGET_LAG = '20 minutes'
WAREHOUSE = mywh
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my_iceberg_table'
AS
SELECT product_id, product_name FROM staging_table;
Autorisations futures sur les tables Iceberg dynamiques¶
Pour garantir l’accès à toutes les nouvelles tables Iceberg dynamiques créées dans le schéma, utilisez la syntaxe GRANT … ON FUTURE ICEBERG TABLES sans le mot-clé DYNAMIC
. Par exemple :
GRANT <privilege> ON FUTURE ICEBERG TABLES IN SCHEMA my_schema TO ROLE my_role;
Si vous utilisez le mot-clé DYNAMIC
, l’autorisation ne donne pas accès aux nouvelles tables Iceberg dynamiques créées dans le schéma. Par exemple, la commande suivante ne s’applique pas aux tables Iceberg dynamiques :
GRANT <privilege> ON FUTURE DYNAMIC TABLES IN SCHEMA my_schema TO ROLE my_role;
Considérations et limites¶
Les tables Iceberg dynamiques prennent en charge les mêmes types de données que les tables Iceberg classiques dans Snowflake. Pour plus d’informations, voir Types de données pris en charge.
Catalogue est un paramètre de compte, de schéma ou de base de données que vous pouvez configurer pour être implicite, comme pour les tables Iceberg classiques gérées par Snowflake.
Les tables Iceberg dynamiques ne prennent actuellement pas en charge la clause
IF NOT EXISTS
. L’utilisation de la clauseIF NOT EXISTS
génère une erreur si la table cible existe déjà.Les tables Iceberg dynamiques ne sont actuellement prises en charge que pour les instructions
CREATE
. La spécification deDYNAMIC ICEBERG
dans toute autre commande (par exemple, le nomALTER DYNAMIC ICEBERG TABLE <>
) entraîne une erreur.