Catégories :

Moniteur d’entrepôt et de ressources DDL

CREATE WAREHOUSE

Crée un nouvel entrepôt virtuel dans le système.

La création initiale d’un entrepôt virtuel pourrait prendre un certain temps pour approvisionner les ressources de calcul, à moins que l’entrepôt soit créé initialement dans un état SUSPENDED.

Voir aussi :

ALTER WAREHOUSE , DESCRIBE WAREHOUSE , DROP WAREHOUSE , SHOW WAREHOUSES

Syntaxe

CREATE [ OR REPLACE ] WAREHOUSE [ IF NOT EXISTS ] <name>
        [ [ WITH ] objectProperties ]
        [ objectParams ]

Où :

objectProperties ::=
  WAREHOUSE_TYPE = STANDARD | SNOWPARK-OPTIMIZED
  WAREHOUSE_SIZE = XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE
  MAX_CLUSTER_COUNT = <num>
  MIN_CLUSTER_COUNT = <num>
  SCALING_POLICY = STANDARD | ECONOMY
  AUTO_SUSPEND = <num> | NULL
  AUTO_RESUME = TRUE | FALSE
  INITIALLY_SUSPENDED = TRUE | FALSE
  RESOURCE_MONITOR = <monitor_name>
  COMMENT = '<string_literal>'
  ENABLE_QUERY_ACCELERATION = TRUE | FALSE
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = <num>
objectParams ::=
  MAX_CONCURRENCY_LEVEL = <num>
  STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num>
  STATEMENT_TIMEOUT_IN_SECONDS = <num>
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]

Paramètres requis

name

Identificateur de l’entrepôt virtuel ; doit être unique pour votre compte.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Propriétés facultatives (objectProperties)

WAREHOUSE_TYPE = STANDARD | SNOWPARK-OPTIMIZED

Spécifie le type d’entrepôt.

Valeurs valides
  • STANDARD : entrepôt virtuel standard.

  • SNOWPARK-OPTIMIZED : entrepôt virtuel optimisé pour Snowpark.

Par défaut

STANDARD

WAREHOUSE_SIZE = XSMALL | SMALL | MEDIUM | LARGE | XLARGE | XXLARGE | XXXLARGE | X4LARGE | X5LARGE | X6LARGE

Spécifie la taille de l’entrepôt virtuel. La taille détermine le nombre de ressources de calcul dans chaque cluster de l’entrepôt et, par conséquent, le nombre de crédits consommés pendant le fonctionnement de l’entrepôt.

Valeurs valides

Valeurs prises en charge

Synonymes

XSMALL

'X-SMALL'

SMALL

MEDIUM

LARGE

XLARGE

'X-LARGE'

XXLARGE

X2LARGE , '2X-LARGE'

XXXLARGE

X3LARGE , '3X-LARGE'

X4LARGE

'4X-LARGE'

X5LARGE

'5X-LARGE'

X6LARGE

'6X-LARGE'

Par défaut

XSMALL

Note

  • Les tailles XSMALL, SMALL, X5LARGE et X6LARGE ne prennent pas en charge les entrepôts optimisés pour Snowpark. La taille par défaut des entrepôts optimisés pour Snowpark est MEDIUM.

  • Pour utiliser une valeur contenant un trait d’union (par exemple '2X-LARGE'), vous devez la mettre entre guillemets simples, comme indiqué.

MAX_CLUSTER_COUNT = num

Spécifie le nombre maximum de clusters pour un entrepôt multi-clusters. Pour un entrepôt à un seul cluster, cette valeur est toujours 1.

Valeurs valides

De 1 jusqu’à 10

Notez que spécifier une valeur supérieure à 1 indique que l’entrepôt est un entrepôt multi-clusters ; cependant, la valeur ne peut être définie que sur une valeur supérieure dans Snowflake Enterprise Edition (ou supérieure).

Pour plus d’informations, voir Entrepôts multi-clusters.

Par défaut

1 (entrepôt à un seul cluster)

Astuce

Pour Snowflake Enterprise Edition (ou une version supérieure), nous recommandons de toujours régler la valeur supérieure à 1 pour aider à maintenir la haute disponibilité et la performance optimale de l’entrepôt multi-clusters. Cela permet également d’assurer la continuité dans l’éventualité peu probable d’une défaillance de cluster.

MIN_CLUSTER_COUNT = num

Spécifie le nombre minimum de clusters pour un entrepôt multi-clusters (s’applique uniquement aux entrepôts multi-clusters).

Valeurs valides

De 1 jusqu’à 10

Cependant, notez que MIN_CLUSTER_COUNT doit être égal ou inférieur à MAX_CLUSTER_COUNT :

  • Si les deux paramètres sont égaux, l’entrepôt fonctionne en mode maximisé.

  • Si MIN_CLUSTER_COUNT est inférieur à MAX_CLUSTER_COUNT, l’entrepôt fonctionne en mode Mise à l’échelle automatique.

Pour plus d’informations, voir Entrepôts multi-clusters.

Par défaut

1

SCALING_POLICY = STANDARD | ECONOMY

Spécifie la politique de démarrage et d’arrêt automatiques des clusters dans un entrepôt multi-clusters fonctionnant en mode « Mise à l’échelle automatique ».

Valeurs valides
  • STANDARD : minimise les files d’attente en démarrant des clusters.

  • ECONOMY : conserve les crédits en préférant garder les clusters en cours d’exécution entièrement chargés.

Pour une description plus détaillée, voir Définition de la politique de mise à l’échelle d’un entrepôt multi-clusters .

Par défaut

STANDARD

AUTO_SUSPEND = num | NULL

Indique le nombre de secondes d’inactivité après lesquelles un entrepôt est automatiquement suspendu.

Valeurs valides

Tout nombre entier 0 ou supérieur, ou NULL :

  • Définir une valeur inférieure à 60 est autorisé mais cette action est susceptible de ne pas déclencher le comportement escompté/souhaité car le processus d’arrière-plan qui suspend un entrepôt s’exécute environ toutes les 60 secondes et n’est donc pas destiné à autoriser le contrôle exact sur la suspension d’entrepôt.

  • La définition d’une valeur 0 ou NULL signifie que l’entrepôt n’est jamais suspendu.

Par défaut

600 (l’entrepôt est automatiquement suspendu après 10 minutes d’inactivité)

Important

Définir la valeur AUTO_SUSPEND sur 0 ou NULL n’est pas recommandé à moins que vos charges de travail de requête nécessitent un entrepôt en cours d’exécution continue. Notez que cela peut entraîner une consommation importante de crédit (et des frais correspondants), en particulier pour les grands entrepôts.

AUTO_RESUME = TRUE | FALSE

Indique s’il faut reprendre automatiquement un entrepôt lorsqu’une instruction SQL lui est soumise (par exemple, une requête).

Valeurs valides
  • TRUE : l’entrepôt reprend lorsqu’une nouvelle requête est soumise.

  • FALSE : l’entrepôt ne reprend que lorsqu’il est explicitement repris en utilisant ALTER WAREHOUSE ou via l’interface Web de Snowflake.

Par défaut

TRUE (l’entrepôt reprend automatiquement lorsqu’une instruction SQL lui est soumise)

INITIALLY_SUSPENDED = TRUE | FALSE

Indique si l’entrepôt est initialement créé à l’état « Suspendu ».

Valeurs valides
  • TRUE : l’entrepôt est créé, mais suspendu.

  • FALSE : l’entrepôt commence à être exécuté après sa création.

Par défaut

FALSE

RESOURCE_MONITOR = string

Spécifie le nom d’un moniteur de ressources explicitement affecté à l’entrepôt. Lorsqu’un moniteur de ressources est explicitement affecté à un entrepôt, il contrôle les crédits mensuels utilisés par l’entrepôt (et tous les autres entrepôts auxquels le moniteur est affecté).

Valeurs valides

Tout moniteur de ressources existant.

Pour plus de détails, voir Travailler avec des moniteurs de ressources.

Par défaut

Aucune valeur (aucun moniteur de ressources affecté à l’entrepôt)

Astuce

Pour afficher tous les moniteurs de ressources et leurs identificateurs, utilisez la commande SHOW RESOURCE MONITORS.

COMMENT = 'string_literal'

Spécifie un commentaire pour l’entrepôt.

Propriétés de Query Acceleration

ENABLE_QUERY_ACCELERATION = TRUE | FALSE

Indique s’il faut activer le service d’accélération des requêtes pour les requêtes qui dépendent de cet entrepôt pour les ressources de calcul.

Valeurs valides
  • TRUE active Query Acceleration

  • FALSE désactive Query Acceleration

Par défaut

FALSE : Query Acceleration est désactivé

QUERY_ACCELERATION_MAX_SCALE_FACTOR = num

Spécifie le facteur d’échelle maximum pour la location de ressources informatiques pour l’accélération des requêtes. Le facteur d’échelle est utilisé comme un multiplicateur basé sur la taille de l’entrepôt. Par exemple, si le QUERY_ACCELERATION_MAX_SCALE_FACTOR = 2 pour un entrepôt, alors cet entrepôt peut louer jusqu’à deux fois la quantité de ressources informatiques de sa taille pour les utiliser dans l’accélération des requêtes. Comme le service d’accélération des requêtes peut augmenter le taux de consommation de crédit d’un entrepôt, le facteur d’échelle maximum peut aider à limiter le taux de consommation.

En définissant la valeur QUERY_ACCELERATION_MAX_SCALE_FACTOR à 0, on élimine la limite et on permet aux requêtes de louer autant de ressources que nécessaire et autant de ressources que disponibles pour traiter la requête.

Quelle que soit la valeur de QUERY_ACCELERATION_MAX_SCALE_FACTOR, la quantité de ressources informatiques disponibles pour l’accélération des requêtes est limitée par les ressources disponibles dans le service et le nombre d’autres requêtes simultanées. La quantité de ressources demandées pour le service dépend de la quantité de la requête qui peut être accélérée et de la quantité de données qui seront traitées pour y répondre.

Valeurs valides

De 0 jusqu’à 100

Par défaut

8

Paramètres facultatifs (objectParams)

MAX_CONCURRENCY_LEVEL = num

Paramètre d’objet qui spécifie le niveau de simultanéité des instructions SQL (requêtes et DML) exécutées par un cluster d’entrepôts.

Pour une description détaillée de ce paramètre, voir MAX_CONCURRENCY_LEVEL.

STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = num

Paramètre objet qui spécifie le temps, en secondes, pendant lequel une instruction SQL (requête, DDL, DML, etc.) peut être mise en file d’attente sur un entrepôt avant qu’elle soit annulée par le système.

Pour une description détaillée de ce paramètre, voir STATEMENT_QUEUED_TIMEOUT_IN_SECONDS.

STATEMENT_TIMEOUT_IN_SECONDS = num

Paramètre objet qui spécifie le temps, en secondes, au bout duquel une instruction SQL en cours d’exécution (requête, DDL, DML, etc.) est annulée par le système.

Pour une description détaillée de ce paramètre, voir STATEMENT_TIMEOUT_IN_SECONDS.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

CREATE WAREHOUSE

Compte

Only the SYSADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Contrôle d’accès dans Snowflake.

Notes sur l’utilisation

  • La création d’un entrepôt virtuel le définit automatiquement comme entrepôt actif/actuel pour la session en cours (équivalent à l’utilisation de la commande USE WAREHOUSE pour l’entrepôt).

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • Utiliser OR REPLACE équivaut à utiliser DROP WAREHOUSE sur l’entrepôt existant, puis à créer un nouvel entrepôt avec le même nom.

    Les instructions CREATE OR REPLACE <objet> sont atomiques. Autrement dit, lorsque l’objet est remplacé, la suppression de l’ancien objet et la création du nouvel objet sont traitées en une seule transaction.

    Toutes les requêtes exécutées sur l’entrepôt détruit sont interrompues.

  • La création initiale et la reprise d’un entrepôt virtuel optimisé pour Snowpark peuvent prendre plus de temps que les entrepôts standard.

  • Les entrepôts optimisés pour Snowpark ne prennent pas en charge l’accélération des requêtes.

  • Les entrepôts optimisés pour Snowpark ne sont pas pris en charge pour les tailles d’entrepôts XSMall, SMALL, X5LARGE ou X6LARGE.

Exemples

Créer un entrepôt X-Large :

CREATE OR REPLACE WAREHOUSE my_wh WITH WAREHOUSE_SIZE='X-LARGE';

Créer un grand entrepôt dans un état suspendu :

CREATE OR REPLACE WAREHOUSE my_wh WAREHOUSE_SIZE=LARGE INITIALLY_SUSPENDED=TRUE;
Revenir au début