Périmètre
- Plateforme : Snowflake
- Périmètre : compte xy12345, base CANOT_LAB
- Niveau de droits : 3 (+ droits et outils (pseudonymisés))
- Mode SQL : lecture seule
- Lectures : 33 lues sur 35
- Contenu lu : 12 tables, 25 objets, 6 familles de requêtes
- Versions : canot X, duckdb X, sqlglot X
Capacités
Ce rapport est un inventaire : inventorié, ni exporté ni rejoué.
| Niveau | Ce rapport | Canot sur Snowflake |
|---|---|---|
| Inventaire | fait par ce scan (niveau 3) | complet, niveaux 1 à 3 |
| Export | non fait par ce scan | iceberg, avec canot drill |
| Preuve | non faite par ce scan | P1 parité des données ; P2 rejeu de requêtes, avec canot drill |
Connecteur Snowflake : testé ; test consigné : canot drill, 17/10/2026 : compte d'essai Snowflake, TPC-H SF10 (docs/banc-essai.md).
Ce que Canot ne peut pas prouver ici : les formes déclarées (P1, P2) portent sur les tables et les requêtes ; les objets à reconstruire hors tables sont comptés, pas prouvés.
Coûts observés
Fenêtre : 365 jours. Crédits mesurés ; en dollars, seulement avec le prix fourni ou une fourchette catalogue datée.
| Poste | Valeur | Nature et base |
|---|---|---|
| Crédits consommés | 43,50 crédits | calculé · S05 somme des crédits par service sur 365 jours |
| En dollars | 113,10 $ à 226,20 $
| estimé, confiance basse · S05 crédits × prix catalogue du crédit, du plus bas au plus haut |
Par service
| Service | Crédits |
|---|---|
| WAREHOUSE_METERING | 41,50 crédits |
| SERVERLESS_TASK | 1,20 crédits |
| AUTO_CLUSTERING | 0,80 crédits |
Par entrepôt
| Entrepôt | Crédits |
|---|---|
| CANOT_WH | 40,00 crédits |
| COMPUTE_WH | 1,50 crédits |
Stockage
| Poste | Valeur | Nature et base |
|---|---|---|
| Stockage moyen facturé | 24 Go | mesuré · S04 |
| Stockage en dollars | Non estimé : prix de votre contrat non lu. | non estimé |
Mouvements
3 figée(s), 7 vivante(s), 1 recréée(s), 1 non déterminée(s).
recréée : DDL de moins de 7 jours sans écriture postérieure ; vivante : écriture de moins de 30 jours ; figée : dernière écriture plus ancienne ; non déterminée : écritures non lues. Base : S01, S08, S25.
| Table | Type | Volume | Mouvement | Preuve |
|---|---|---|---|---|
| CANOT_LAB.RAW.ARCHIVE_1 | TABLE | 5 Go | figée | dernière écriture le 10/01/2025 |
| CANOT_LAB.RAW.ARCHIVE_2 | TABLE | 5 Go | figée | dernière écriture le 10/01/2025 |
| CANOT_LAB.RAW.ARCHIVE_3 | TABLE | 5 Go | figée | dernière écriture le 10/01/2025 |
| CANOT_LAB.RAW.ORDERS | TABLE | 2 Go | vivante | dernière écriture le 16/10/2026 |
| CANOT_LAB.MART.FCT_ORDERS | TABLE | 1,5 Go | recréée | dernière DDL le 17/10/2026, sans écriture postérieure |
| CANOT_LAB.RAW.CUSTOMERS | TABLE | 800 Mo | vivante | dernière écriture le 15/10/2026 |
| CANOT_LAB.RAW.ORDERS_CLONE | CLONE | 100 Mo | vivante | dernière écriture le 15/10/2026 |
| CANOT_LAB.MART.DIM_LEGACY | TABLE | 10 Mo | non déterminé | écritures non lues |
| CANOT_LAB.OPS.EVENTS_LOG | TABLE | 10 Mo | vivante | dernière écriture le 17/10/2026 |
| CANOT_LAB.SANDBOX.OLD_EXPORT_2023 | TABLE | 10 Mo | vivante | dernière écriture le 15/10/2026 |
| CANOT_LAB.SANDBOX.TEAM_WORK | TABLE | 10 Mo | vivante | dernière écriture le 15/10/2026 |
| CANOT_LAB.EXT.US_STATES | EXTERNE | non lu | vivante | dernière écriture le 15/10/2026 |
Ce qui ne part pas avec la copie
Objets à reconstruire ou à décrire
| Type | Nombre | Exemples |
|---|---|---|
| base importée | 2 | SNOWFLAKE, SNOWFLAKE_SAMPLE_DATA |
| étiquette | 1 | CANOT_LAB.OPS.PII |
| flux | 1 | CANOT_LAB.OPS.ORDERS_STREAM |
| fonction | 3 | CANOT_LAB.MART.CLEAN_NAME, CANOT_LAB.MART.FX_TO_CENTS, CANOT_LAB.MART.SLUG |
| partage | 2 | S_CLIENTS, S_PARTNER |
| pipe | 1 | CANOT_LAB.OPS.P_EVENTS |
| politique de lignes | 1 | CANOT_LAB.OPS.RAP_COUNTRY |
| politique de masquage | 1 | CANOT_LAB.OPS.MP_EMAIL |
| procédure | 3 | CANOT_LAB.MART.SP_DYNAMIC_JS, CANOT_LAB.MART.SP_DYNAMIC_PY, CANOT_LAB.MART.SP_REFRESH_MART |
| stage | 2 | CANOT_LAB.EXT.S3_PUBLIC, CANOT_LAB.RAW.INT_STAGE |
| table dynamique | 1 | CANOT_LAB.MART.DT_COUNTRY_REVENUE |
| tâche | 4 | CANOT_LAB.OPS.T_DAILY, CANOT_LAB.OPS.T_EXPORT_NIGHTLY, CANOT_LAB.OPS.T_REFRESH, CANOT_LAB.OPS.T_SERVERLESS |
| vue | 3 | CANOT_LAB.MART.V_KPI, CANOT_LAB.STAGING.STG_ORDERS, CANOT_LAB.STG.V_STATES |
Routines par langage : JAVASCRIPT 2, PYTHON 2, SQL 2.
Colonnes à type propre à la plateforme (2)
| Table | Colonne | Type |
|---|---|---|
| CANOT_LAB.RAW.CUSTOMERS | profile | VARIANT |
| CANOT_LAB.RAW.CUSTOMERS | geo | GEOGRAPHY |
Historique facturé
| Poste | Valeur | Nature et base |
|---|---|---|
| Time Travel et Fail-safe (2 tables) | 6,3 Go | calculé · S03 Time Travel + Fail-safe des tables présentes, + octets encore facturés des tables supprimées |
Dépendances
Dépendances externes (F01)
| Objet | Type | Emplacement |
|---|---|---|
| CANOT_LAB.EXT.S3_PUBLIC | stage | s3://canot-lab-public |
| SNOWFLAKE_SAMPLE_DATA | base importée | non lu |
| CANOT_LAB.EXT.US_STATES | table | s3://canot-lab-public |
Dépendances externes cachées (F02)
| Objet | Chemin | Emplacement |
|---|---|---|
| CANOT_LAB.MART.V_KPI | CANOT_LAB.MART.V_KPI → CANOT_LAB.STG.V_STATES → CANOT_LAB.EXT.US_STATES | s3://canot-lab-public |
| CANOT_LAB.STG.V_STATES | CANOT_LAB.STG.V_STATES → CANOT_LAB.EXT.US_STATES | s3://canot-lab-public |
Écritures hors de la plateforme (F03)
| Source | Mode | Destination |
|---|---|---|
| famille 5cf082fb4538 | observé | s3://canot-lab-public |
| objet CANOT_LAB.OPS.T_EXPORT_NIGHTLY | déclaré | s3://canot-lab-export |
Consommateurs externes (F09)
| Partage | Comptes |
|---|---|
| S_CLIENTS | 2 |
Outils vus dans les requêtes
| Outil | Familles | Exécutions |
|---|---|---|
| dbt | 1 | 40 |
| non identifié | 4 | 21 |
| tableau | 1 | 2 |
Clients connectés (sessions)
| Client | Sessions |
|---|---|
| dbt-snowflake | 2 190 |
| looker | 310 |
Rejouabilité des requêtes
| Catégorie | Signification | Familles | Exécutions | Poids |
|---|---|---|---|---|
| C0 | traduit et accepté par DuckDB | 0 | 0 | 0,00 crédits |
| C1 | non analysable | 0 | 0 | 0,00 crédits |
| C2 | commande, non analysée | 1 | 1 | 0,00 crédits |
| C3 | traduction impossible | 0 | 0 | 0,00 crédits |
| C4 | erreur d'analyse DuckDB | 1 | 5 | non lu |
| C5 | erreur de liaison (objet ou fonction propre) | 3 | 54 | 3,00 crédits |
| C6 | variable | 0 | 0 | 0,00 crédits |
| C7 | DDL, COPY, MERGE, requêtes de métadonnées : comptés à part | 1 | 3 | 0,20 crédits |
| Poste | Valeur | Nature et base |
|---|---|---|
| Taux C0, par familles | 0,0 % | calculé · S24 traduit et accepté par DuckDB (C0) / C0 à C6 ; C7 compté à part |
| Taux C0, par exécutions | 0,0 % | calculé · S24 traduit et accepté par DuckDB (C0) / C0 à C6 ; C7 compté à part |
| Taux C0, pondéré | 0,0 %
| calculé · S24 traduit et accepté par DuckDB (C0) / C0 à C6 ; C7 compté à part |
Base : 0/5 familles, fenêtre non lue, sqlglot X, duckdb X.
accepté ≠ résultat identique. Traduit vers DuckDB, non comparé.
1 famille contenant un secret, comptée(s) puis écartée(s).
Fonctions propres à la plateforme
| Fonction | Familles |
|---|---|
| moteur:LAST_QUERY_ID | 1 |
| moteur:MY_UDF | 1 |
| moteur:RESULT_SCAN | 1 |
| stage | 1 |
| tablefromrows | 1 |
Familles les plus exécutées (formes normalisées)
| Catégorie | Exécutions | Outil | Forme normalisée |
|---|---|---|---|
| C5 | 40 | dbt | SELECT o.id, o.amount FROM CANOT_LAB.RAW.ORDERS AS o WHERE o.id > ? |
| C5 | 12 | SELECT COUNT(*) FROM CANOT_LAB.RAW.ORDERS WHERE id = ? | |
| C4 | 5 | SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) | |
| C7 | 3 | COPY INTO @CANOT_LAB.EXT.S3_PUBLIC/out/ FROM (SELECT * FROM CANOT_LAB.RAW.ORDERS) | |
| C5 | 2 | tableau | SELECT MY_UDF(id) FROM CANOT_LAB.RAW.ARCHIVE_1 |
| C2 | 1 | EXECUTE |
Fourchettes
Estimations de planification : chaque fourchette porte ses hypothèses. Un canot drill remplace le débit supposé par la mesure.
| Poste | Valeur | Nature et base |
|---|---|---|
| Volume à copier | 19,4 Go
| calculé · S03 somme des octets actifs |
| Durée de lecture de la copie | 4 min à 16 min
| estimé, confiance basse · S03 volume ÷ débit supposé |
| Crédits de lecture de la copie | 0,07 crédits à 0,27 crédits
| estimé, confiance basse · S03 durée × crédits par heure |
| Coût de lecture de la copie | 0,18 $ à 1,40 $
| estimé, confiance basse · S03 crédits × prix catalogue du crédit, du plus bas au plus haut |
| Travail de reprise | 5,2 j à 31,0 j
| estimé, confiance basse · S02, S11, S12, S13, S14, S17 objets × jours par objet + colonnes × jours par colonne |
Constats
Chaque constat est étiqueté « À examiner », sans niveau de gravité. Il dit ce qui est observé et ce qui ne l'est pas.
F01 · Dépendance externeÀ examiner
3 constats
| Cible | Observé |
|---|---|
| objet CANOT_LAB.EXT.S3_PUBLIC | Stage externe (s3://canot-lab-public). |
| objet SNOWFLAKE_SAMPLE_DATA | Base importée d'un partage entrant. |
| table CANOT_LAB.EXT.US_STATES | Table externe : données hors de la plateforme (s3://canot-lab-public). |
F02 · Dépendance externe cachéeÀ examiner
2 constats
| Cible | Observé |
|---|---|
| objet CANOT_LAB.MART.V_KPI | Dépend de CANOT_LAB.EXT.US_STATES, hors de la plateforme, par 2 niveaux : CANOT_LAB.MART.V_KPI → CANOT_LAB.STG.V_STATES → CANOT_LAB.EXT.US_STATES (s3://canot-lab-public). |
| objet CANOT_LAB.STG.V_STATES | Dépend de CANOT_LAB.EXT.US_STATES, hors de la plateforme, par 1 niveau : CANOT_LAB.STG.V_STATES → CANOT_LAB.EXT.US_STATES (s3://canot-lab-public). |
F03 · Écriture hors de la plateformeÀ examiner
2 constats
| Cible | Observé |
|---|---|
| famille 5cf082fb4538 | Écriture hors de la plateforme observée : 3 exécutions ; destination : s3://canot-lab-public. |
| objet CANOT_LAB.OPS.T_EXPORT_NIGHTLY | Tâche qui écrit hors de la plateforme (déclaré dans sa définition) ; destination : s3://canot-lab-export. |
F04 · Rôle propriétaire sans titulaireÀ examiner
1 constat
| Cible | Observé |
|---|---|
| role LAB_ORPHAN | Le rôle LAB_ORPHAN possède 1 objet et n'est accordé à aucun utilisateur, ni directement ni par un autre rôle. |
F05 · Stockage sans lecture observéeÀ examiner
3 constats
| Cible | Observé |
|---|---|
| table CANOT_LAB.RAW.ARCHIVE_1 | 5 Go stockés. Aucune lecture observée dans ACCESS_HISTORY du 18/10/2025 au 17/10/2026 ; non vus : consommateurs de partages, RESULT_SCAN. Partagée avec 2 consommateurs externes : leurs lectures ne sont pas vues. |
| table CANOT_LAB.RAW.ARCHIVE_2 | 5 Go stockés. Aucune lecture observée dans ACCESS_HISTORY du 18/10/2025 au 17/10/2026 ; non vus : consommateurs de partages, RESULT_SCAN. |
| table CANOT_LAB.RAW.ARCHIVE_3 | 5 Go stockés. Aucune lecture observée dans ACCESS_HISTORY du 18/10/2025 au 17/10/2026 ; non vus : consommateurs de partages, RESULT_SCAN. |
F06 · Historique payé non transférableÀ examiner
1 constat
| Cible | Observé |
|---|---|
| table CANOT_LAB.RAW.ORDERS | 6 Go d'historique facturé (Time Travel et Fail-safe), rétention 30 jours, pour 2 Go actifs ; cet historique ne part pas avec la copie. |
F07 · Table supprimée encore facturéeÀ examiner
1 constat
| Cible | Observé |
|---|---|
| table CANOT_LAB.RAW.TMP_DROPPED | Supprimée le 10/10/2026 ; 300 Mo encore facturés (Time Travel et Fail-safe). |
F08 · SQL dynamiqueÀ examiner
2 constats
| Cible | Observé |
|---|---|
| objet CANOT_LAB.MART.SP_DYNAMIC_JS | Procédure en JAVASCRIPT : construit du SQL à l'exécution ; les objets touchés ne se lisent pas dans le code. |
| objet CANOT_LAB.MART.SP_DYNAMIC_PY | Procédure en PYTHON : construit du SQL à l'exécution ; les objets touchés ne se lisent pas dans le code. |
F09 · Consommateurs externesÀ examiner
1 constat
| Cible | Observé |
|---|---|
| objet S_CLIENTS | Partage vers 2 comptes cibles ; 2 objets partagés. Les lectures des consommateurs ne sont pas vues par ce scan. |
F10 · Sécurité à reconstruireÀ examiner
5 constats
| Cible | Observé |
|---|---|
| objet CANOT_LAB.OPS.MP_EMAIL | Politique de masquage appliquée à 1 objet ; elle ne part pas avec la copie ; la copie demande un principal non filtré. |
| objet CANOT_LAB.OPS.PII | Étiquette appliquée à 1 objet ; elle ne part pas avec la copie. |
| objet CANOT_LAB.OPS.RAP_COUNTRY | Politique de lignes appliquée à 1 objet ; elle ne part pas avec la copie ; la copie demande un principal non filtré. |
| table CANOT_LAB.MART.FCT_ORDERS | Politiques : OPS.RAP_COUNTRY. Elles ne partent pas avec la copie ; la copie demande un principal non filtré par ces politiques. |
| table CANOT_LAB.RAW.CUSTOMERS | Politiques : OPS.MP_EMAIL ; 1 étiquette. Elles ne partent pas avec la copie ; la copie demande un principal non filtré par ces politiques. |
F11 · Chaîne planifiée et ses échecsÀ examiner
7 constats
| Cible | Observé |
|---|---|
| objet CANOT_LAB.MART.DT_COUNTRY_REVENUE | Table dynamique, planification 1 day ; exécutions non lues. |
| objet CANOT_LAB.OPS.ORDERS_STREAM | Flux ; sur CANOT_LAB.RAW.ORDERS. |
| objet CANOT_LAB.OPS.P_EVENTS | Pipe, état RUNNING ; exécutions non lues. |
| objet CANOT_LAB.OPS.T_DAILY | Tâche, planification USING CRON 0 3 * * * Europe/Paris, état started ; 365 exécutions, 2 échecs, dernière le 17/10/2026. |
| objet CANOT_LAB.OPS.T_EXPORT_NIGHTLY | Tâche, planification USING CRON 0 2 * * * UTC, état started ; 30 exécutions, 30 échecs, dernière le 17/10/2026. |
| objet CANOT_LAB.OPS.T_REFRESH | Tâche, état started ; 365 exécutions, 0 échec, dernière le 17/10/2026 ; chaîne : CANOT_LAB.OPS.T_DAILY → CANOT_LAB.OPS.T_REFRESH. |
| objet CANOT_LAB.OPS.T_SERVERLESS | Tâche, planification 60 MINUTE, état suspended ; 0 exécution, 0 échec. |
F12 · Lecture incomplèteÀ examiner
3 constats
| Cible | Observé |
|---|---|
| lecture S33 | STREAMS non lue (droit absent) ; limite : flux (F11). |
| lecture S34 | TASK_VERSIONS non lue (droit absent) ; limite : versions des tâches (F11). |
| lecture lectures_par_table | Lectures non déterminées pour 1 table ; limite : stockage sans lecture observée (F05). |
Ce que ce rapport ne chiffre pas
- Coût du stockage : prix de votre contrat non lu.
- Tarif de votre contrat : prix de votre contrat non lu.
- Stockage d'arrivée, double exploitation, fonctionnement après la sortie : dépendent de votre contrat et de votre architecture.
- Résultat identique des requêtes traduites : accepté ≠ résultat identique : traduit vers DuckDB, non comparé ; un canot drill compare les résultats.
- Projections de coût fournies par la plateforme : non reprises : elles ne se vérifient pas depuis le scan.
Méthode
33 lectures lues sur 35. Chaque lecture est consignée avec son statut et sa raison ; une valeur non lue reste vide, jamais 0.
| Id | Vue | Statut | Raison | Lignes | Fenêtre | Latence |
|---|---|---|---|---|---|---|
| S33 | STREAMS | non lu | droit absent ; limite : flux (F11) | non lu | ||
| S34 | TASK_VERSIONS | non lu | droit absent ; limite : versions des tâches (F11) | non lu | ||
| S01 | TABLES | lu | 10 | 1,5 h | ||
| S02 | COLUMNS | lu | 10 | |||
| S03 | TABLE_STORAGE_METRICS | lu | 10 | 2 h | ||
| S04 | STORAGE_USAGE | lu | 10 | du 18/10/2025 au 17/10/2026 | ||
| S05 | METERING_DAILY_HISTORY | lu | 10 | du 18/10/2025 au 17/10/2026 | 3 h | |
| S06 | WAREHOUSE_METERING_HISTORY | lu | 10 | du 18/10/2025 au 17/10/2026 | 3 h | |
| S07 | QUERY_ATTRIBUTION_HISTORY | lu | 10 | |||
| S08 | TABLE_DML_HISTORY | lu | 10 | du 18/10/2025 au 17/10/2026 | 6 h | |
| S09 | TABLE_QUERY_PRUNING_HISTORY | lu | 10 | du 18/10/2025 au 17/10/2026 | 4 h | |
| S10 | OBJECT_DEPENDENCIES | lu | 10 | |||
| S11 | VIEWS | lu | 10 | |||
| S12 | FUNCTIONS | lu | 10 | |||
| S13 | PROCEDURES | lu | 10 | |||
| S14 | TASKS | lu | 10 | |||
| S15 | TASK_HISTORY | lu | 10 | du 18/10/2025 au 17/10/2026 | ||
| S16 | SERVERLESS_TASK_HISTORY | lu | 10 | |||
| S17 | PIPES | lu | 10 | |||
| S18 | COPY_HISTORY | lu | 10 |
… et 15 autres dans lectures.csv.
Droits utilisés
Niveau 3 : SNOWFLAKE.OBJECT_VIEWER, SNOWFLAKE.USAGE_VIEWER, SNOWFLAKE.GOVERNANCE_VIEWER, SNOWFLAKE.SECURITY_VIEWER. Jamais demandés : IMPORTED PRIVILEGES, MANAGE GRANTS, IMPORT SHARE, USAGE sur les fonctions, READ sur les stages.
Coût du scan
| Poste | Valeur | Nature et base |
|---|---|---|
| Requêtes émises | 35 requêtes | mesuré |
| Durée de lecture | 412 s | mesuré |
Garde-fous
- Tout SQL envoyé passe par une garde lecture seule : seules les instructions SELECT, SHOW, DESCRIBE et ALTER SESSION SET partent. Aucune écriture, aucune activation d'API, aucune modification de paramètre.
- Utilisateurs et rôles des requêtes pseudonymisés par HMAC, avec un sel tiré pour ce scan et jamais écrit ; valeurs d'étiquettes hachées ; emplacements réduits au compartiment.
- Le texte SQL brut n'est jamais écrit : seules les formes normalisées, littéraux masqués, sortent de la collecte.
Règles
- Mouvement : recréée : DDL de moins de 7 jours sans écriture postérieure ; vivante : écriture de moins de 30 jours ; figée : dernière écriture plus ancienne ; non déterminée : écritures non lues.
- Stockage sans lecture : fenêtre réelle de la vue lue, comparée à 365 jours ; les angles morts de chaque vue sont cités dans le constat.
- Durée de copie : débit supposé de 20 à 80 Mo/s.
- Les prix catalogue sont datés et sourcés ; ils ne remplacent pas le prix de votre contrat.
Suite
Ce rapport décrit votre plateforme ; il ne recommande ni de partir ni de rester.
Pour mesurer une sortie sur un périmètre choisi : canot drill copie vers Apache Iceberg, compare source et copie, et signe un dossier de preuve.
Pour aller plus loin, le diagnostic q4o, dès 22 000 € HT : tarif de votre contrat, exécution réelle, scénarios, marche à suivre. canot.io