Snowflake Flashcards

1
Q

Quels sont les types de Tables

A
  1. Permanent
  2. Temporary
  3. Transient
  4. External
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quel est le type de table par défaut?

A

Permanent

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quel type de table accepte le Fail Safe?

A

Table permanent

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quelle(s) table(s) est(sont) supprimé que si on le demande avec un drop?

A

table permanent, transient et external

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quelle est la caractéristique d’une table Extenrnal?

A

Elle contient des données de l’extèrieur (ex: s3)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Pourquoi utiliser une table Transient plutôt qu’une table Permanent?

A

Pour éviter les coûts du fail safe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quelle table possède du Time Travel?

A

Permanent
Transient
Temporary

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quelle table ne possède pas du Time Travel?

A

External

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quelle feature permet de récupérer les donnée 7j après la deadline du time travel ?

A

Le Fail Safe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Comment utiliser le fail Safe?

A

En dernier recourt en demandant à Snowflake

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qu’est ce que le Fail Safe?

A

Permet de récupérer des données pendant 7j après la fin du Time travel

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qu’est ce qu’une sequence?

A

Objet qui permet de faire des incrémentation (positive ou négative)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Comment avance une séquence ?

A

En faisant des requêtes dessus

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Peut ont avoir des doublons avec les Séquences?

A

Oui, en modifiant la séquence en cours
Ex:
avec un pat de 1 on va générer 1=> 2=>3
on change le pas à -1 on va retomber sur 2=>1=>0=>-1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Pour quel use-case, sont le plus souvent utilisé les séquences?

A

Pour générer des ids incrémentals

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Est-ce qu’il est garanti de ne pas avoir de trous entre deux valeurs avec une Séquence?

A

Non snow ne garanti pas les gap entre les valeurs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

A quoi sert un Stream?

A

C’est un marque page il sert à savoir ce qu’il s’est passé depuis la dernière lecture d’une table

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Quels sont les types de view?

A

Standard
Materialized
Secure

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Quel est le type de view par défaut?

A

Standard

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Que stock une view Standard?

A

Elle stock uniquement la query select pas de données

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Qu’est ce qu’une Materialized view? (détail)

A

C’est ce qu’on appelle un PRECOMPUTED DATASET cad c’est une view qui stock le comptenu d’une table
le contenu est refresh à chaque DML sur la table source par snowflake
On ne peut pas avoir de join dans la query c’est MONOSOURCE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Quel est l’avantage d’une materialized view?

A

Utile si la table source ne fait pas des modification tout le temps car modif à chaque DML

Si la requête de la vue est couteuse on l’execute moins (si: lecture view > DML table source)

Utile sur les external tables car on réduit le chemin vers la donnée

On peut avoir une clé de clustering différentes que sur la table source

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Quel sont les couts de stockage d’une vue Standard?

A

Aucun coût

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Quels sont les coûts d’une vue Materialized?

A

Stockage de la données + coût lié au requêtage?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Quelles view peuvent être secure ?
Toutes : Materialized & Standard
26
A quoi ça sert de rendre une view sécure ?
ça permet d'augmenter la data privacy
27
comment fonctionne une view secure?
Avec une vue classique les optim interne de snowFlake accède à toutes les données de la table source et donc à des données cachés la secure vue N'UTILISE PLUS ces optim et donc le risque d'avoir accès à des données cachées"
28
Quel est le désavantage d'une vue secure ?
Enlève de l'optim et réduit donc les perfs
29
Combien y a t il de bloc principale dans l'archi Snow? et quels sont ils?
Il y en a 3 Data Storage Layer Query Procesing Layer Cloud services Layer
30
Qu'est ce que le data Storage Layer?
C'est le layer qui stock toutes les donées et il les partages à tous les noeud comme sur du Shared Disk
31
A quoi correspond le Query processing Layer?
Il représente les WH snow Chaque WH à accès au données partagé et il possède un cache
32
Quel Layer de l'archi snow correspond au WH?
C'est le Query Processing Layer
33
A quoi sert le Cloud Service Layer?
Il correspond à toute la partie gestion de l'infra * Gestion de l'auth et du contrôle d'accès au ressource * Création des ressources cloud derrière (ex: blob s3) * Management des Transaction pour le respect du concept ACID * les métadata * Optim des query * Sécu + data encryption
34
Est-ce que nous gérons le Cloud Service Layer?
Non c'est transparent pour nous
35
Qu'est ce que stock un stream?
Uniquement l'offeset il ne stock pas de data de la table
36
Comment peut ont savoir les modification qu'une table/view a subit depuis la dernière fois que nous avons regarder?
On utilise un STREAM. On REGARDE L'OFFSET qu'il stock et on utilise le change data capture pour trouver toutes les actions DML effectué depuis l'offset Il est également possible si nous connaissons la dernière date d'utiliser l'attribut CHANGES dans notre requête pour voir ces infos
37
Comment évolue le versionning d'une table ?
il s'incrémente à chaque transactions commit contenant 1 ou + DML
38
Le stream a un impact sur la table ?si oui explique
l ajoute 3 colonnes cachés * Metadata$Action: action effectué (uniquement insert et delete) * Metadata$Update: indique si cette ligne fait partie d'un update (U= 2 lignes I + D) *Metadata$Row_ID: id de la ligne affecté
39
Y a-t-il plusieurs style de stream si oui quels sont-ils?
Standard Append Only Insert Only
40
Quel est le type de stream par défaut?
Standard
41
Sur quel type d'objet peut être appliqué un stream standard?
Table, View, Directory
42
Quels sont les diffs entre un stream Standard et un stream AppendOnly?
L'appendOnly note juste les actions d'insert
43
Quelle est la différence entre un stream Append Only et insert Only?
L'append Only est applicable sur les table, view et directory le Insert Only l'est que sur les external table
44
Que se passe-il si un stream n'est pas maj avant le fin de la période de rétention ?
Il devient obsolète
45
Comment la versoin d'une table est incrémenté?
A chaque transaction commit avec au moins 1 DML la version de la table va augmenter
46
Quel version vais-je avoir dans le cas suivant : table v1 * Début de transaction * Insert sur la table * select sur le stream => * Fin de transaction * commit
version n°1
47
Quel version vais-je avoir dans le cas suivant : table v1 * Début de transaction * Insert sur la table * select sur le stream * Fin de transaction * commit * select sur le stream =>
version n°2
48
Quelle est la période de retention d'un stream avant qu'il devienne stale si la table source à une durée de rétention<14j?
pour ce cas snow fait une exception et conserve les données 14j après ça le stream devient stale sinon c’est la durée de rétention
49
Comment je gère le stream si j'ai plusieurs client ?
Il faut plusieurs stream car il va avancer à chaque DML
50
Existe-t-il une alternative au stream pour tracker les changement sur la table?
Oui on peut utiliser l'oprion CHANGES dans une query select pour récupérer les données
51
Qu'est ce que l'option CHANGES et comment elle fonctionne ? est-il toujours activé?
Permet de tracker les changements d'une table/view il faut activer CHANGE_TRACKING = TRUE pour une vue il faut le faire sur la table ET la vue On lui passe une option temps pour savoir quoi récup * AT/END: timestamp à partir de quand on veux/ fin du tracking (end optionnel) ou * BEFORE: tous les changes depuis un id de transactions
52
Existe-t-il plusieurs type pour la fonction de CHANGES tracking?
APPEND-ONLY: que les insert DEFAULT: toutes les DML on a donc le delta depuis l'option temporel
53
QUel est l'avantage/Inconvenient du CHANGES par rapport au stream?
++: plusieurs requête donne le même résultat --: Il faut connaitre ou on s'est arrêté
54
A quoi sert un clé de clustering?
snowflake va ranger les données en fonction de cette clé
55
Qu'est ce qu'une clé de clustering?
un groupe de colonne ou de reférence de colonne (cad un truncate ou autre modification sur les valeurs de la colonne)
56
Comment Snow range naturellement les data?
Il les range en fonction de données logique, date ou région géographique
57
Lors d'ingestion de fichiers comment sont ranger les données?
Snow fait des micros partition en fct de chaque fichiers et ranges les données dans ces MP en fonction des données logique (date, région)
58
Qu'est ce que l'auto clustering?
C'est une feature snow qui permet de changé la clé de clustering automatiquement
59
Comment fonctionne l'auto clustering?
Snow regarde les dml effectué sur la table pour trouver la clé optimale Il fait ce traitement en fond
60
Comment mettre en place l'autoclustering?
Il faut ALTER .. RESUME/SUSPEND Recluster sur l'objet
61
L'autoclustering est-il coûteux ? explique
oui c'est couteux, ça va nous couter des crédit. On ne doit pas passer de WH, snow se charge d'allouer les ressources optimales On est facturé que pour ce qui a était utilisé pour le reclustering si c'est activé mais que la clé change pas on est pas facturé
62
Comment agit L'auto clustering dans le temps?
Quand il a trouvé une clé optimale en fct des dml il se ne travaille plus Si dans le futur il en trouve une nouvelle il va se réactiver et ranger la table
63
Quels est le maximum de colonne par clé de clustering recommandé ?
il est recommandé de ne pas dépassé les 3/4 colonnes il vaut mieux tendre vers un
64
Comment définir la bonne clé de clustering?
1. trouver le bon pattern a. grosse table >1TB b. trouver les colonnes les plus utilisés dans les WHere et Join 2. lancer un process classique pour monitorer 3. Appliquer la clé 4. att la fin du clustering 5. relancer le proces 2. 6. comparer
65
Comment savoir quand snow à fini de ranger la tables en fct du clustering?
SELECT SYSTEME$CLUSTERING_INFORMATION('table','(colonne1,…, colonne2')) dès que average_depth arrête de changer le clustering est done
66
Le clustering est efficace sur toutes les tables ?
Non il est recommandé d'avoir des grosse tables >1TB même si on peut voir des amélioration sur des tables de plusieurs GB
67
Qu'est ce que la profondeur du clustering?
Il indique le nombre de MP contenant les même valeurs plus il est petit mieux c'est
68
Comment sont stocker les tables, par snow, pour optimiser les requêtes?
Elles sont toutes stocker dans des micro partitions
69
Comment snow utilise les Micro partition pour optimiser le query scan?
Il stock des stats sur chaque MP afin de savoir si il a besoin de la lire ou non
70
Ou sont stocker les stats des micro Partitions? et en quoi est-ce utile de les stocker là?
Elles sont stocké dans le cloud service layer ça permet à snow de connaître les MP à scan avant de passer dans le Query Processing Layer
71
Qu'est ce que snow garde comme stats sur les Micro Partitions?
Il garde différentes infos sur chaque colonne: *le range de valeurs dans cette MP (ex: 14-128) *nombre de valeurs distinct dans cette MP (ex: 3) ainsi que d'autre info du même style
72
Quelle recommandation de taille de fichier est faite pour le Data loading dans Snowflake ?
Snowflake recommande des fichiers de 100-250Mb
73
Quelle est la taille maximale autorisée pour un VARIANT dans Snowflake ?
Un VARIANT peut avoir une taille maximale de *16MB (non compressé)*.
74
Pourquoi est-il recommandé d'ajouter un chemin logique pour les external et internal stages dans Snowflake ?
Cela permet de récupérer toutes les données partitionnées en une seule commande et d'avoir plusieurs copy into en parallèle.
75
Quelles informations sont stockées dans les métadonnées par Snowflake lors de l'exécution de COPY INTO ?
nowflake stocke des informations telles que: * nom de chaque fichier * sa taille * ETag * Nomber de row parsé dans le fichier * Timestamp du dernier load du fichier * Information sur n'importe quelle erreur rencontrer à l'ingestion
76
Comment peut-on éviter de charger les valeurs null dans un VARIANT lors de l'utilisation de COPY INTO ?
On peut utiliser l'option STRIP_NULL_VALUES dans la commande COPY INTO.
77
Quel problème potentiel peut survenir avec les CSV lors de leur chargement dans Snowflake ? Comment le résoudre?
Il est possible que des espaces devant les valeurs encapsulées entre guillemets soient considérés comme faisant partie de la valeur. (` "valeur"`VS `valeur`) On peut utiliser l'option `TRIM_SPACE=true`dans le file format
78
Quelle est la relation entre la taille du Warehouse (WH) et le nombre de fichiers exécutables en parallèle dans Snowflake ?
Le nombre de fichiers exécutables en parallèle dépend de la taille du WH. Plus le WH est grand, plus il peut exécuter de fichiers en parallèle. On peut éxécuter un WH par cpu dans le WH
79
Lors d'une ingestion, que se passe-t-il avec les fichiers dont les métadonnées ont expiré dans Snowflake ? (Détail)
Par défaut, Snowflake ne les insère pas. Pour les ingérer à nouveau, on peut utiliser l'option LOAD_UNCERTAIN_FILES dans la commande COPY INTO. Pour ne plus utiliser les metadata on peut utiliser l'option FORCE qui va tout load à chaque fois
80
Lors d'ingestion de fichiers comment Snowflake traite-t-il les espaces vides devant les valeurs encapsulées entre guillemets dans les fichiers CSV ?
Snowflake les considère par défaut comme faisant partie de la valeur. Pour les ignorer, on peut utiliser l'option TRIM_SPACE=true dans le file format.
81
Pourquoi est-il recommandé d'ajouter un chemin logique pour les stages dans Snowflake ?
Cela permet de mieux organiser les données, facilite la récupération des données partitionnées, et permet d'exécuter plusieurs opérations de copie en parallèle.
82
Lors d'une ingestion, comment Snowflake traite-t-il les valeurs NULL dans les données JSON ? peut on le contourner?
Dans un VARIANT, les valeurs NULL apparaissent dans une chaîne de caractères. Pour éviter de les charger, on peut utiliser l'option STRIP_NULL_VALUES dans la commande COPY INTO.
83
Comment évolue le nombre de fichier ingérable en parallèles en fonction de la taile des WH?
Chaque taille de WH double le nombre de fichier ingérable | WH Size | File in // | | ---- | ---- | | XS | 8 | | S | 16 | | M | 32 | | L | 64 | | XL | 128 |
84
Quelle est la recommandation en terme de taille de WH pour l'ingestion de fichiers ?
Sauf si on load des centaines ou des milliers de fichiers en même temps il vaut mieux rester sur *un WH de petite taille * (XS->L) car si on utilise un gros WH sans utiliser tous ces cpu on va payer plus cher sans amélioration
85
A quoi sert l'option PATTERN dans la commande COPY into et quelle est sa subtilité ?
Elle sert à récupérer les fichier en fonction d'un pattern défini Elle fonctionne différemment entre les Snowpipe et les Bulk loading: Imaginons que nous avons un `COPY into FROM @s/path1/path2/` et que l'url du stage est `s3://mybucket/path1/` Sur un snowpipe le pattern va être appliqué uniquement sur `path2/` Sur le Bulk il ser appliqué sur toute la storage location du From soit `@s/path1/path2/`
86
Comment snowflake sait qu'il ne doit pas load un fichier 2 fois avec une commande copy into?
Snowflake va stocker dans les metadata de la table le status du fichier.
86
Lors d'un copy into combien de temps sont stocké les metada?
Les metadata de la table qui stockent le status du fichier sont stocké *64j*
86
Dans quel cas snowflake sait si un fichier mis dans le stage il y a plus de 64j a été ingéré dans la table?
Il le sais si il coche l'un des deux cas suivant: * Fichier ingéré il y a moins de 64j (donc en décalé avec le dépôt dans le stage) * Fichier ingéré à la création de la table (donc quand le fichier était déjà dans le stage)
87
Comment se fait le bulk loading de fichiers locaux?
En 2 étapes: 1. **Upload** les fichiers sur un internal stage ou un table/user stage avec la commande PUT 2. **Load** le contenue des fichiers dans la table avec la commande copy into
88
Qu'avons nous besoin pour faire du Bulk Loading pour des fichiers locaux?
il faut un WH
89
Combien y a t il d'internal stage ?
Il y en a 3 1. User 2. Table 3. Named
90
Comment accède-t-on a un user stage?
On y accède en faisant `@~` par exemple pour lister : `LS @~`
91
Qu'est ce qu'on ne peut pas faire avec un user stage?
* Ne peut pas être Alter ou Drop * On ne peut pas set de file format. Il faudra l'ajouter dans le COPY INTO * Ne peut pas faire de grant sur l'objet
92
Quand utiliser un User stage?
Quand un seul utilisateur doit avoir accès au données et quand ils doit load les données dans une/plusieurs tables
93
Quand ne **pas** utiliser d'user stage?
Quand plusieurs utilisateurs doivent acceder au données
94
Doit on créer le user stage?
Non chaque utilisateur à un user stage par défaut
95
Qui peut accéder à un user stage?
Seulement l'utilisateur à qui appartient le stage
96
Qu'est ce qu'un table stage?
par défaut toutes les tables on un stage associé
97
Quand est-ce utile d'utiliser un table stage?
On peut l'utiliser quand uniquement une seule table devra recevoir ces fichiers
98
Comment accéder à un table stage?
On accède au table stage avec `@%mytable`
99
Qu'est ce qu'on ne peut pas faire avec un table stage?
* Ne peut pas être Alter ou Drop * Ne peut pas transformé la data pendant le load (pas possible d'utiliser une query comme dans les copy into) * Ne peut pas faire de grant sur l'objet
100
Comment faire des stage/drop/list/query sur le table stage?
Il faut être owner de la table
101
Quand ne pas utiliser de Table stage ?
Quand les fichiers doivent être load dans plusieurs tables Ou qu’on doit faire une transfo
102
Qu'est ce qu'un named stage?
C'est le seul internal stage qui n'est pas crée par défaut. C'est un database object C'est le stage le plus flexible
103
Pourquoi le Named Stage est le plus flexible?
Comme c'est un database object on peut grant/revoke son usage à n'importe quel rôle Si on a les bons droits on peut donc load n'importe quel fichier du stage dans n'importe quelle table
104
Quand utiliser un named stage?
Quand plusieurs utilisateurs doivent accéder aux fichiers et qu'on veut pourvoir les loads dans plusieurs tables
105
Mise en situation: J'ai des fichiers sur mon poste dont seul moi doit avoir accés, je veux les load dans la tableA et B Quel stage j'utilise ?
Un User Stage
106
Mise en situation: On a des fichiers sur une machine plusieurs utilisateurs doivent pouvoir y accéder, pour les load dans la tableA et B Quel stage j'utilise ?
Named stage (plusieurs user + plusieurs table)
107
Mise en situation: J'ai des fichiers sur mon poste dont seul moi doit avoir accés, je veux les load dans la tableA. J'aurais besoin de faire une petite transfo avant de load Quel stage j'utilise ?
User stage/Named stage car le table stage load les fichiers sans transfo en dur
108
Mise en situation: On a des fichiers sur un poste plusieurs utilisateurs peuvent y avoir accés, je veux les load dans la tableA en dur Quel stage j'utilise ?
Table stage (plusieurs user + Une table + pas de transfo)