Création de tables Apache Iceberg™ dynamiques¶
Ce sujet explique comment créer des tables Iceberg dynamiques, qui stockent les résultats de requête au format de table Iceberg.
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 de data lake : vous pouvez stocker de grands jeux de données à moindre coût tout en effectuant des transformations et des analyses dans Snowflake, en tirant parti du format Iceberg pour des requêtes et une gestion efficaces.
Définition de pipelines de transformation de données continue : en utilisant des tables dynamiques, vous pouvez vous assurer que les données sont toujours à jour sans intervention manuelle et gérer efficacement les flux de données à grande vitesse grâce à 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 dynamique Iceberg qui lit à partir de my_iceberg_table
, utilisez la syntaxe suivante :
CREATE DYNAMIC ICEBERG TABLE my_dynamic_iceberg_table (product_id NUMBER(10,0), product_name STRING, order_time TIMESTAMP_NTZ)
TARGET_LAG = '20 minutes'
WAREHOUSE = my_warehouse
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my_iceberg_table'
AS
SELECT product_id, product_name, order_time 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.Vous ne pouvez pas cloner les tables Iceberg dynamiques. Par ailleurs, le clonage d’une base de données ou d’un schéma contenant une table Iceberg dynamique ne clone pas la table vers le nouvel emplacement.