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
Q

Quelles view peuvent être secure ?

A

Toutes :
Materialized & Standard

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

A quoi ça sert de rendre une view sécure ?

A

ça permet d’augmenter la data privacy

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

comment fonctionne une view secure?

A

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”

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

Quel est le désavantage d’une vue secure ?

A

Enlève de l’optim et réduit donc les perfs

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

Combien y a t il de bloc principale dans l’archi Snow? et quels sont ils?

A

Il y en a 3
Data Storage Layer
Query Procesing Layer
Cloud services Layer

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

Qu’est ce que le data Storage Layer?

A

C’est le layer qui stock toutes les donées et il les partages à tous les noeud comme sur du Shared Disk

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

A quoi correspond le Query processing Layer?

A

Il représente les WH snow
Chaque WH à accès au données partagé et il possède un cache

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

Quel Layer de l’archi snow correspond au WH?

A

C’est le Query Processing Layer

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

A quoi sert le Cloud Service Layer?

A

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

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

Est-ce que nous gérons le Cloud Service Layer?

A

Non c’est transparent pour nous

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

Qu’est ce que stock un stream?

A

Uniquement l’offeset il ne stock pas de data de la table

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

Comment peut ont savoir les modification qu’une table/view a subit depuis la dernière fois que nous avons regarder?

A

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

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

Comment évolue le versionning d’une table ?

A

il s’incrémente à chaque transactions commit contenant 1 ou + DML

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

Le stream a un impact sur la table ?si oui explique

A

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é
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Y a-t-il plusieurs style de stream si oui quels sont-ils?

A

Standard
Append Only
Insert Only

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

Quel est le type de stream par défaut?

A

Standard

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

Sur quel type d’objet peut être appliqué un stream standard?

A

Table, View, Directory

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

Quels sont les diffs entre un stream Standard et un stream AppendOnly?

A

L’appendOnly note juste les actions d’insert

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

Quelle est la différence entre un stream Append Only et insert Only?

A

L’append Only est applicable sur les table, view et directory

le Insert Only l’est que sur les external table

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

Que se passe-il si un stream n’est pas maj avant le fin de la période de rétention ?

A

Il devient obsolète

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

Comment la versoin d’une table est incrémenté?

A

A chaque transaction commit avec au moins 1 DML la version de la table va augmenter

46
Q

Quel version vais-je avoir dans le cas suivant :

table v1
* Début de transaction
* Insert sur la table
* select sur le stream => <?numéro de version?>
* Fin de transaction
* commit

A

version n°1

47
Q

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 => <? numéroDeVersion ?>
A

version n°2

48
Q

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?

A

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
Q

Comment je gère le stream si j’ai plusieurs client ?

A

Il faut plusieurs stream car il va avancer à chaque DML

50
Q

Existe-t-il une alternative au stream pour tracker les changement sur la table?

A

Oui on peut utiliser l’oprion CHANGES dans une query select pour récupérer les données

51
Q

Qu’est ce que l’option CHANGES et comment elle fonctionne ?
est-il toujours activé?

A

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
Q

Existe-t-il plusieurs type pour la fonction de CHANGES tracking?

A

APPEND-ONLY: que les insert

DEFAULT: toutes les DML on a donc le delta depuis l’option temporel

53
Q

QUel est l’avantage/Inconvenient du CHANGES par rapport au stream?

A

++: plusieurs requête donne le même résultat

–: Il faut connaitre ou on s’est arrêté

54
Q

A quoi sert un clé de clustering?

A

snowflake va ranger les données en fonction de cette clé

55
Q

Qu’est ce qu’une clé de clustering?

A

un groupe de colonne ou de reférence de colonne (cad un truncate ou autre modification sur les valeurs de la colonne)

56
Q

Comment Snow range naturellement les data?

A

Il les range en fonction de données logique, date ou région géographique

57
Q

Lors d’ingestion de fichiers comment sont ranger les données?

A

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
Q

Qu’est ce que l’auto clustering?

A

C’est une feature snow qui permet de changé la clé de clustering automatiquement

59
Q

Comment fonctionne l’auto clustering?

A

Snow regarde les dml effectué sur la table pour trouver la clé optimale
Il fait ce traitement en fond

60
Q

Comment mettre en place l’autoclustering?

A

Il faut ALTER .. RESUME/SUSPEND Recluster sur l’objet

61
Q

L’autoclustering est-il coûteux ? explique

A

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
Q

Comment agit L’auto clustering dans le temps?

A

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
Q

Quels est le maximum de colonne par clé de clustering recommandé ?

A

il est recommandé de ne pas dépassé les 3/4 colonnes il vaut mieux tendre vers un

64
Q

Comment définir la bonne clé de clustering?

A
  1. trouver le bon patterna. 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
Q

Comment savoir quand snow à fini de ranger la tables en fct du clustering?

A

SELECT SYSTEME$CLUSTERING_INFORMATION(‘table’,’(colonne1,…, colonne2’))

dès que average_depth arrête de changer le clustering est done

66
Q

Le clustering est efficace sur toutes les tables ?

A

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
Q

Qu’est ce que la profondeur du clustering?

A

Il indique le nombre de MP contenant les même valeurs

plus il est petit mieux c’est

68
Q

Comment sont stocker les tables, par snow, pour optimiser les requêtes?

A

Elles sont toutes stocker dans des micro partitions

69
Q

Comment snow utilise les Micro partition pour optimiser le query scan?

A

Il stock des stats sur chaque MP afin de savoir si il a besoin de la lire ou non

70
Q

Ou sont stocker les stats des micro Partitions? et en quoi est-ce utile de les stocker là?

A

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
Q

Qu’est ce que snow garde comme stats sur les Micro Partitions?

A

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
Q

Quelle recommandation de taille de fichier est faite pour le Data loading dans Snowflake ?

A

Snowflake recommande des fichiers de 100-250Mb

73
Q

Quelle est la taille maximale autorisée pour un VARIANT dans Snowflake ?

A

Un VARIANT peut avoir une taille maximale de 16MB (non compressé).

74
Q

Pourquoi est-il recommandé d’ajouter un chemin logique pour les external et internal stages dans Snowflake ?

A

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
Q

Quelles informations sont stockées dans les métadonnées par Snowflake lors de l’exécution de COPY INTO ?

A

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
Q

Comment peut-on éviter de charger les valeurs null dans un VARIANT lors de l’utilisation de COPY INTO ?

A

On peut utiliser l’option STRIP_NULL_VALUES dans la commande COPY INTO.

77
Q

Quel problème potentiel peut survenir avec les CSV lors de leur chargement dans Snowflake ? Comment le résoudre?

A

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=truedans le file format

78
Q

Quelle est la relation entre la taille du Warehouse (WH) et le nombre de fichiers exécutables en parallèle dans Snowflake ?

A

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
Q

Lors d’une ingestion, que se passe-t-il avec les fichiers dont les métadonnées ont expiré dans Snowflake ? (Détail)

A

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
Q

Lors d’ingestion de fichiers comment Snowflake traite-t-il les espaces vides devant les valeurs encapsulées entre guillemets dans les fichiers CSV ?

A

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
Q

Pourquoi est-il recommandé d’ajouter un chemin logique pour les stages dans Snowflake ?

A

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
Q

Lors d’une ingestion, comment Snowflake traite-t-il les valeurs NULL dans les données JSON ? peut on le contourner?

A

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
Q

Comment évolue le nombre de fichier ingérable en parallèles en fonction de la taile des WH?

A

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
Q

Quelle est la recommandation en terme de taille de WH pour l’ingestion de fichiers ?

A

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
Q

A quoi sert l’option PATTERN dans la commande COPY into et quelle est sa subtilité ?

A

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
Q

Comment snowflake sait qu’il ne doit pas load un fichier 2 fois avec une commande copy into?

A

Snowflake va stocker dans les metadata de la table le status du fichier.

86
Q

Lors d’un copy into combien de temps sont stocké les metada?

A

Les metadata de la table qui stockent le status du fichier sont stocké 64j

86
Q

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?

A

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
Q

Comment se fait le bulk loading de fichiers locaux?

A

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
Q

Qu’avons nous besoin pour faire du Bulk Loading pour des fichiers locaux?

A

il faut un WH

89
Q

Combien y a t il d’internal stage ?

A

Il y en a 3
1. User
2. Table
3. Named

90
Q

Comment accède-t-on a un user stage?

A

On y accède en faisant @~ par exemple pour lister :
LS @~

91
Q

Qu’est ce qu’on ne peut pas faire avec un user stage?

A
  • 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
Q

Quand utiliser un User stage?

A

Quand un seul utilisateur doit avoir accès au données et quand ils doit load les données dans une/plusieurs tables

93
Q

Quand ne pas utiliser d’user stage?

A

Quand plusieurs utilisateurs doivent acceder au données

94
Q

Doit on créer le user stage?

A

Non chaque utilisateur à un user stage par défaut

95
Q

Qui peut accéder à un user stage?

A

Seulement l’utilisateur à qui appartient le stage

96
Q

Qu’est ce qu’un table stage?

A

par défaut toutes les tables on un stage associé

97
Q

Quand est-ce utile d’utiliser un table stage?

A

On peut l’utiliser quand uniquement une seule table devra recevoir ces fichiers

98
Q

Comment accéder à un table stage?

A

On accède au table stage avec @%mytable

99
Q

Qu’est ce qu’on ne peut pas faire avec un table stage?

A
  • 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
Q

Comment faire des stage/drop/list/query sur le table stage?

A

Il faut être owner de la table

101
Q

Quand ne pas utiliser de Table stage ?

A

Quand les fichiers doivent être load dans plusieurs tables
Ou qu’on doit faire une transfo

102
Q

Qu’est ce qu’un named stage?

A

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
Q

Pourquoi le Named Stage est le plus flexible?

A

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
Q

Quand utiliser un named stage?

A

Quand plusieurs utilisateurs doivent accéder aux fichiers et qu’on veut pourvoir les loads dans plusieurs tables

105
Q

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 ?

A

Un User Stage

106
Q

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 ?

A

Named stage (plusieurs user + plusieurs table)

107
Q

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 ?

A

User stage/Named stage car le table stage load les fichiers sans transfo en dur

108
Q

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 ?

A

Table stage (plusieurs user + Une table + pas de transfo)