Exit scan · Scan de sortie

Diffusion interne

Scan de sortie : Snowflake

Constats au 2026-10-17 10:00 UTC · données en retard de 1,5 h au plus selon la vue · édition : non déterminée (Standard ou droit absent) · Canot X

DSI

3 tables présentes (volume non lu) et 3 objets à reconstruire en plus des tables. Mouvement : 0 figée, 0 vivante, 1 recréée, 2 non déterminées. Rejouabilité : 0/2 familles acceptées par DuckDB ; accepté ≠ résultat identique.

DAF

Consommation non lue : METERING_DAILY_HISTORY non lu : droit absent. En dollars, non estimé : crédits non lus. Historique facturé non lu : TABLE_STORAGE_METRICS non lu : droit absent.

RSSI

Politiques non lues : POLICY_REFERENCES non lu : niveau de droits non demandé. 0 dépendance externe (F01, F02), 0 écriture hors de la plateforme (F03), 0 partage avec des consommateurs externes (F09). Rôles propriétaires sans titulaire non déterminés : droits non lus.

Périmètre

  • Plateforme : Snowflake
  • Périmètre : compte ab98765, base PROD
  • Niveau de droits : 3 (+ droits et outils (pseudonymisés))
  • Mode SQL : lecture seule
  • Lectures : 5 faites sur 19
  • Contenu lu : 3 tables, 3 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é.

NiveauCe rapportCanot sur Snowflake
Inventairefait par ce scan (niveau 3)complet, niveaux 1 à 3
Exportnon fait par ce scaniceberg, avec canot drill
Preuvenon faite par ce scanP1 parité des données ; P2 rejeu des requêtes, avec canot drill

Connecteur Snowflake : testé ; test enregistré : canot drill, 2026-10-17 : 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) couvrent les tables et les requêtes ; les objets à reconstruire hors tables sont comptés, non prouvés.

Coûts observés

Fenêtre : 365 jours. Crédits mesurés ; en dollars, seulement avec le prix fourni ou une fourchette de prix catalogue datée.

ÉlémentValeurNature et base
Crédits consommésNon lu : METERING_DAILY_HISTORY non lu : droit absent.non lu
En dollarsNon estimé : crédits non lus.non estimé

Stockage

ÉlémentValeurNature et base
Stockage facturé moyenNon lu : STORAGE_USAGE non lu : droit absent.non lu
Stockage en dollarsNon estimé : prix de votre contrat non lu.non estimé

Mouvements

0 figée, 0 vivante, 1 recréée, 2 non déterminées.

recréée : DDL de moins de 7 jours sans écriture ultérieure ; vivante : écriture de moins de 30 jours ; figée : dernière écriture plus ancienne ; non déterminée : écritures non lues. Base : S01.

TableTypeVolumeMouvementPreuve
PROD.MART.KPITABLEnon lurecrééedernier DDL le 2026-10-16, écritures non lues
PROD.RAW.ARCHIVE_2019TABLEnon lunon déterminéécritures non lues
PROD.RAW.ORDERSTABLEnon lunon déterminéécritures non lues

Ce qui ne part pas avec la copie

Objets à reconstruire ou à décrire

TypeNombreExemples
procédure1PROD.MART.SP_HIDDEN
tâche1PROD.OPS.T_NIGHTLY
vue1PROD.MART.V_REVENUE

Routines par langage : NON LU 1.

Colonnes de type propre à la plateforme (1)

TableColonneType
PROD.RAW.ORDERSdocVARIANT

Historique facturé

ÉlémentValeurNature et base
Time Travel et Fail-safe (0 table)Non lu : TABLE_STORAGE_METRICS non lu : droit absent.non lu

Dépendances

Outils vus dans les requêtes

OutilFamillesExécutions
dbt140
non identifié421
tableau12

Rejouabilité des requêtes

CatégorieSignificationFamillesExécutionsPoids
C0traduite et acceptée par DuckDB000,00 crédit
C1non analysable000,00 crédit
C2commande, non analysée110,00 crédit
C3traduction impossible000,00 crédit
C4erreur d'analyse DuckDB15non lu
C5erreur de liaison (objet ou fonction propre à la plateforme)000,00 crédit
C6variable000,00 crédit
C7DDL, COPY, MERGE, requêtes de métadonnées : comptées à part130,20 crédit
ÉlémentValeurNature et base
Taux C0, par familles0,0 %calculé
traduite et acceptée par DuckDB (C0) / C0 à C6 ; C7 compté à part
Taux C0, par exécutions0,0 %calculé
traduite et acceptée par DuckDB (C0) / C0 à C6 ; C7 compté à part
Taux C0, pondéréNon estimé : aucune famille testable.non estimé

Base : 0/2 familles, fenêtre non lue, sqlglot X, duckdb X.

accepté ≠ résultat identique. Traduit vers DuckDB, non comparé.

3 familles non testées ; 1 famille contenant un secret, comptée puis écartée.

Fonctions propres à la plateforme

FonctionFamilles
moteur:LAST_QUERY_ID1
moteur:MY_UDF1
moteur:RESULT_SCAN1
stage1
tablefromrows1

Familles les plus exécutées (formes normalisées)

CatégorieExécutionsOutilForme normalisée
40dbtSELECT o.id, o.amount FROM CANOT_LAB.RAW.ORDERS AS o WHERE o.id > ?
12SELECT COUNT(*) FROM CANOT_LAB.RAW.ORDERS WHERE id = ?
C45SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
C73COPY INTO @CANOT_LAB.EXT.S3_PUBLIC/out/ FROM (SELECT * FROM CANOT_LAB.RAW.ORDERS)
2tableauSELECT MY_UDF(id) FROM CANOT_LAB.RAW.ARCHIVE_1
C21EXECUTE

Fourchettes

Estimations de cadrage : chaque fourchette porte ses hypothèses. Un canot drill remplace le débit supposé par une mesure.

ÉlémentValeurNature et base
Volume à copierNon lu : TABLE_STORAGE_METRICS non lu : droit absent.non lu
Durée de lecture de la copieNon estimé : volume non lu.non estimé
Crédits de lecture de la copieNon estimé : volume non lu.non estimé
Coût de lecture de la copieNon estimé : crédits non lus.non estimé
Reprise0,8 j à 5,0 j
  • 3 objets à reconstruire et 1 colonne de type propre à la plateforme
  • hypothèses q4o : 0,25 à 1,5 jour par objet, 0,1 à 0,5 par colonne, à discuter
estimé, confiance basse · S02, S09, S10, S11
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.

F11 · Chaîne planifiée et ses échecsÀ examiner

1 constat

CibleObservé
objet PROD.OPS.T_NIGHTLYTâche, planification USING CRON 0 1 * * * UTC, état started ; exécutions non lues.

F12 · Lecture incomplèteÀ examiner

15 constats

CibleObservé
lecture S03TABLE_STORAGE_METRICS non lu (droit absent) ; limite : octets actifs et historique (F05, F06, F07, fourchettes).
lecture S04STORAGE_USAGE non lu (droit absent) ; limite : stockage facturé moyen.
lecture S05METERING_DAILY_HISTORY non lu (droit absent) ; limite : crédits par service.
lecture S06WAREHOUSE_METERING_HISTORY non lu (droit absent) ; limite : crédits par entrepôt.
lecture S07TABLE_DML_HISTORY non lu (droit absent) ; limite : dernières écritures (mouvement).
lecture S08TABLE_QUERY_PRUNING_HISTORY non lu (droit absent) ; limite : solution de repli pour les lectures par table (F05).
lecture S12TASK_HISTORY non lu (délai dépassé) ; limite : exécutions et échecs des tâches (F11).
lecture S13QUERY_HISTORY non lu (niveau de droits non demandé) ; limite : familles de requêtes, rejouabilité, écritures observées (F03).
lecture S14ACCESS_HISTORY non lu (niveau de droits non demandé) ; limite : lectures par objet : F05 non calculé ; édition non déterminée (Standard ou droit absent).
lecture S15POLICY_REFERENCES non lu (niveau de droits non demandé) ; limite : politiques appliquées (F10).
lecture S16TAG_REFERENCES non lu (niveau de droits non demandé) ; limite : étiquettes (F10).
lecture S17GRANTS_TO_ROLES non lu (niveau de droits non demandé) ; limite : rôles propriétaires sans titulaire (F04).
lecture S18GRANTS_TO_USERS non lu (niveau de droits non demandé) ; limite : rôles propriétaires sans titulaire (F04).
lecture S19SHARES non lu (niveau de droits non demandé) ; limite : consommateurs externes (F09).
lecture code_des_routinesCode non lu pour 1 routine (filtré par les droits ou non fourni) ; limite : SQL dynamique (F08).

Aucun constat pour : F01, F02, F03, F04, F05, F06, F07, F08, F09, F10. Une absence de constat ne vaut que pour les lectures faites (voir F12 et la méthode).

Ce que ce rapport ne chiffre pas

  • Stockage facturé moyen : STORAGE_USAGE non lu : droit absent.
  • Coût du stockage : prix de votre contrat non lu.
  • Crédits consommés : METERING_DAILY_HISTORY non lu : droit absent.
  • Crédits en dollars : crédits non lus.
  • Volume à copier : TABLE_STORAGE_METRICS non lu : droit absent.
  • Durée de lecture de la copie : volume non lu.
  • Crédits de lecture de la copie : volume non lu.
  • Coût de lecture de la copie : crédits non lus.
  • Historique facturé : TABLE_STORAGE_METRICS non lu : droit absent.
  • Votre tarif contractuel : prix de votre contrat non lu.
  • Stockage de destination, fonctionnement en parallèle des deux plateformes, exploitation après la sortie : dépendent de votre contrat et de votre architecture.
  • Résultats identiques des requêtes traduites : accepté ≠ résultat identique ; traduites vers DuckDB, non comparées ; un canot drill compare les résultats.
  • Projections de coût fournies par la plateforme : non utilisées, car elles ne peuvent pas être vérifiées depuis le scan.

Utiliser ce rapport pour vos travaux réglementaires (RGPD, DORA, NIS2, Data Act, SecNumCloud, ABE)

Ces éléments peuvent appuyer vos propres travaux sur le RGPD, DORA, NIS2, le Data Act, SecNumCloud ou les orientations de l'ABE sur l'externalisation. Ce sont des éléments de preuve, pas une conclusion : ce rapport n'est pas une certification, ce n'est pas un conseil juridique, et il ne dit pas si vos contrats ou votre organisation satisfont à une réglementation.

CadreCe qu'il demande, en brefCe que ce rapport vous apporteCe qu'il ne couvre pas
DORA (règlement (UE) 2022/2554)Art. 28, § 8, et art. 30, § 3, point f) : une transition réaliste, avec une période adéquate.Le débit mesuré et une fourchette de temps de reprise issus de l'exercice ; une fourchette de durée de copie (estimée) dans le scan.Hors validation humaine et bascule de vos applications.
DORA (règlement (UE) 2022/2554)Art. 28 : savoir ce qui dépend du prestataire TIC.Ce qui ne se déplace pas tel quel : vues, routines, tâches, politiques, dépendances externes, avec les éléments à l'appui de chaque constat.Un inventaire de la plateforme, pas de vos contrats ni des applications qui y sont connectées.
Data Act (règlement (UE) 2023/2854)Art. 29 : les frais de changement sont supprimés à partir du 12 janvier 2027.L'effort qui reste à votre charge : coût de lecture, durée de copie et estimations de reprise, chacun marqué mesuré, calculé ou estimé.Ne dit rien des frais que votre prestataire peut encore appliquer avant cette date. Les prix sont des tarifs catalogue datés, pas votre contrat.
RGPD (règlement (UE) 2016/679)Chapitre V (transferts) et art. 32 (sécurité du traitement).L'endroit où la copie est hébergée, et les objets de sécurité qui ne la suivent pas (politiques de masquage et d'accès aux lignes, tags).Le lieu d'hébergement est la destination que vous avez choisie. L'appréciation juridique d'un transfert vous revient.
RGPD (règlement (UE) 2016/679)Art. 5, § 1, point c) : minimisation des données.Le scan lit les métadonnées et l'historique d'exécution, pas le contenu des tables. Le texte SQL est masqué et les identités sont pseudonymisées.Vaut pour le scan seulement : un exercice de sortie (drill) lit les données qu'il copie.
NIS2 (directive (UE) 2022/2555)Art. 21, § 2, point d) : sécurité de la chaîne d'approvisionnement, y compris la relation avec chaque prestataire direct.Ce qui vous lie à ce prestataire : dépendances externes et objets qui ne se déplacent pas tels quels, avec les éléments à l'appui de chaque constat.N'évalue pas les mesures de sécurité du prestataire.
Orientations de l'ABE sur l'externalisation (EBA/GL/2019/02)Stratégies de sortie : documentées, réalistes, suffisamment testées et réexaminées périodiquement, pour les externalisations visées par les orientations.L'exercice de sortie (drill) et l'inventaire de ce qui ne se déplace pas (scan), comme éléments de test dans votre dossier de sortie.Un exercice. Les prestataires alternatifs, le volet métier et le réexamen périodique vous reviennent. Vérifiez quel texte s'applique à vous en plus de DORA.

Références arrêtées au 2026-10-19. Vérifiez les textes en vigueur : ils évoluent, et leur application dépend de votre situation.

Méthode

5 lectures faites sur 19. Chaque lecture est enregistrée avec son statut et son motif ; une valeur non lue reste vide, jamais 0.

IdVueStatutMotifLignesFenêtreLatence
S03TABLE_STORAGE_METRICSnon ludroit absent ; limite : octets actifs et historique (F05, F06, F07, fourchettes)non lu
S04STORAGE_USAGEnon ludroit absent ; limite : stockage facturé moyennon lu
S05METERING_DAILY_HISTORYnon ludroit absent ; limite : crédits par servicenon lu
S06WAREHOUSE_METERING_HISTORYnon ludroit absent ; limite : crédits par entrepôtnon lu
S07TABLE_DML_HISTORYnon ludroit absent ; limite : dernières écritures (mouvement)non lu
S08TABLE_QUERY_PRUNING_HISTORYnon ludroit absent ; limite : solution de repli pour les lectures par table (F05)non lu
S12TASK_HISTORYnon ludélai dépassé ; limite : exécutions et échecs des tâches (F11)non lu
S13QUERY_HISTORYnon luniveau de droits non demandé ; limite : familles de requêtes, rejouabilité, écritures observées (F03)non lu
S14ACCESS_HISTORYnon luniveau de droits non demandé ; limite : lectures par objet : F05 non calculé ; édition non déterminée (Standard ou droit absent)non lu
S15POLICY_REFERENCESnon luniveau de droits non demandé ; limite : politiques appliquées (F10)non lu
S16TAG_REFERENCESnon luniveau de droits non demandé ; limite : étiquettes (F10)non lu
S17GRANTS_TO_ROLESnon luniveau de droits non demandé ; limite : rôles propriétaires sans titulaire (F04)non lu
S18GRANTS_TO_USERSnon luniveau de droits non demandé ; limite : rôles propriétaires sans titulaire (F04)non lu
S19SHARESnon luniveau de droits non demandé ; limite : consommateurs externes (F09)non lu
S01TABLESlu101,5 h
S02COLUMNSlu10
S09VIEWSlu10
S10PROCEDURESlu10
S11TASKSlu10

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

ÉlémentValeurNature et base
Requêtes envoyées12 requêtes
  • une lecture = une requête
calculé · S01, S02, S03, S04, S05, S06 …
lectures tentées, lues ou refusées par la plateforme
Durée de lectureNon lu : durée non fournie par la collecte.non lu

Garde-fous

  • Chaque instruction SQL envoyée passe par une garde lecture seule : seules les instructions SELECT, SHOW, DESCRIBE et ALTER SESSION SET sortent. Aucune écriture, aucune activation d'API, aucun changement 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 bucket.
  • 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 ulté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 listé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 la source et la copie, et signe un dossier de preuve.

Pour aller plus loin, le diagnostic q4o, dès 22 000 € HT : votre tarif contractuel, l'exécution réelle, des scénarios, les étapes à suivre. canot.io

Internal distribution

Exit scan: Snowflake

Findings as of 2026-10-17 10:00 UTC · data up to 1.5 h behind depending on the view · edition: not determined (Standard or missing privilege) · Canot X

CIO

3 present tables (volume not read) and 3 objects to rebuild besides tables. Movement: 0 frozen, 0 live, 1 recreated, 2 not determined. Replayability: 0/2 families accepted by DuckDB; accepted ≠ identical result.

CFO

Consumption not read: METERING_DAILY_HISTORY not read: missing privilege. In dollars, not estimated: credits not read. Billed history not read: TABLE_STORAGE_METRICS not read: missing privilege.

CISO

Policies not read: POLICY_REFERENCES not read: privilege level not requested. 0 external dependencies (F01, F02), 0 writes outside the platform (F03), 0 shares with external consumers (F09). Owner roles with no holder not determined: privileges not read.

Scope

  • Platform: Snowflake
  • Scope: account ab98765, database PROD
  • Privilege level: 3 (+ privileges and tools (pseudonymized))
  • SQL mode: read-only
  • Reads: 5 done out of 19
  • Content read: 3 tables, 3 objects, 6 query families
  • Versions: canot X, duckdb X, sqlglot X

Capabilities

This report is an inventory: inventoried, neither exported nor replayed.

LevelThis reportCanot on Snowflake
Inventorydone by this scan (level 3)full, levels 1 to 3
Exportnot done by this scaniceberg, with canot drill
Evidencenot done by this scanP1 data parity; P2 query replay, with canot drill

Snowflake connector: tested; recorded test: canot drill, 2026-10-17: Snowflake trial account, TPC-H SF10 (docs/banc-essai.md).

What Canot cannot prove here: the declared forms (P1, P2) cover tables and queries; objects to rebuild besides tables are counted, not proven.

Observed costs

Window: 365 days. Credits measured; in dollars, only with the price provided or a dated list-price range.

ItemValueNature and basis
Credits consumedNot read: METERING_DAILY_HISTORY not read: missing privilege.not read
In dollarsNot estimated: credits not read.not estimated

Storage

ItemValueNature and basis
Average billed storageNot read: STORAGE_USAGE not read: missing privilege.not read
Storage in dollarsNot estimated: your contract price not read.not estimated

Movements

0 frozen, 0 live, 1 recreated, 2 not determined.

recreated: DDL less than 7 days old with no later write; live: write less than 30 days old; frozen: older last write; not determined: writes not read. Based on: S01.

TableTypeVolumeMovementEvidence
PROD.MART.KPITABLEnot readrecreatedlast DDL on 2026-10-16, writes not read
PROD.RAW.ARCHIVE_2019TABLEnot readnot determinedwrites not read
PROD.RAW.ORDERSTABLEnot readnot determinedwrites not read

What does not leave with the copy

Objects to rebuild or describe

TypeCountExamples
procedure1PROD.MART.SP_HIDDEN
task1PROD.OPS.T_NIGHTLY
view1PROD.MART.V_REVENUE

Routines per language: NOT READ 1.

Columns with a platform-specific type (1)

TableColumnType
PROD.RAW.ORDERSdocVARIANT

Billed history

ItemValueNature and basis
Time Travel and Fail-safe (0 tables)Not read: TABLE_STORAGE_METRICS not read: missing privilege.not read

Dependencies

Tools seen in queries

ToolFamiliesExecutions
dbt140
unidentified421
tableau12

Query replayability

CategoryMeaningFamiliesExecutionsWeight
C0translated and accepted by DuckDB000.00 credits
C1not parseable000.00 credits
C2command, not analyzed110.00 credits
C3translation impossible000.00 credits
C4DuckDB parse error15not read
C5binding error (platform-specific object or function)000.00 credits
C6variable000.00 credits
C7DDL, COPY, MERGE, metadata queries: counted separately130.20 credits
ItemValueNature and basis
C0 rate, by families0.0%computed
translated and accepted by DuckDB (C0) / C0 to C6; C7 counted separately
C0 rate, by executions0.0%computed
translated and accepted by DuckDB (C0) / C0 to C6; C7 counted separately
C0 rate, weightedNot estimated: no testable family.not estimated

Based on: 0/2 families, window not read, sqlglot X, duckdb X.

accepted ≠ identical result. Translated to DuckDB, not compared.

3 families not tested; 1 family containing a secret, counted then set aside.

Platform-specific functions

FunctionFamilies
moteur:LAST_QUERY_ID1
moteur:MY_UDF1
moteur:RESULT_SCAN1
stage1
tablefromrows1

Most executed families (normalized forms)

CategoryExecutionsToolNormalized form
40dbtSELECT o.id, o.amount FROM CANOT_LAB.RAW.ORDERS AS o WHERE o.id > ?
12SELECT COUNT(*) FROM CANOT_LAB.RAW.ORDERS WHERE id = ?
C45SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
C73COPY INTO @CANOT_LAB.EXT.S3_PUBLIC/out/ FROM (SELECT * FROM CANOT_LAB.RAW.ORDERS)
2tableauSELECT MY_UDF(id) FROM CANOT_LAB.RAW.ARCHIVE_1
C21EXECUTE

Ranges

Planning estimates: each range carries its assumptions. A canot drill replaces the assumed throughput with a measurement.

ItemValueNature and basis
Volume to copyNot read: TABLE_STORAGE_METRICS not read: missing privilege.not read
Copy read timeNot estimated: volume not read.not estimated
Copy read creditsNot estimated: volume not read.not estimated
Copy read costNot estimated: credits not read.not estimated
Rework0.8 d to 5.0 d
  • 3 objects to rebuild and 1 column with a platform-specific type
  • q4o assumptions: 0.25 to 1.5 day per object, 0.1 to 0.5 per column, open to discussion
estimated, low confidence · S02, S09, S10, S11
objects × days per object + columns × days per column

Findings

Each finding is labeled "To review", with no severity level. It states what is observed and what is not.

F11 · Scheduled chain and its failuresTo review

1 finding

TargetObserved
object PROD.OPS.T_NIGHTLYTask, schedule USING CRON 0 1 * * * UTC, state started; runs not read.

F12 · Incomplete readTo review

15 findings

TargetObserved
read S03TABLE_STORAGE_METRICS not read (missing privilege); limits: active bytes and history (F05, F06, F07, ranges).
read S04STORAGE_USAGE not read (missing privilege); limits: average billed storage.
read S05METERING_DAILY_HISTORY not read (missing privilege); limits: credits per service.
read S06WAREHOUSE_METERING_HISTORY not read (missing privilege); limits: credits per warehouse.
read S07TABLE_DML_HISTORY not read (missing privilege); limits: latest writes (movement).
read S08TABLE_QUERY_PRUNING_HISTORY not read (missing privilege); limits: fallback for reads per table (F05).
read S12TASK_HISTORY not read (timed out); limits: task runs and failures (F11).
read S13QUERY_HISTORY not read (privilege level not requested); limits: query families, replayability, observed writes (F03).
read S14ACCESS_HISTORY not read (privilege level not requested); limits: reads per object: F05 not computed; edition not determined (Standard or missing privilege).
read S15POLICY_REFERENCES not read (privilege level not requested); limits: applied policies (F10).
read S16TAG_REFERENCES not read (privilege level not requested); limits: tags (F10).
read S17GRANTS_TO_ROLES not read (privilege level not requested); limits: owner roles with no holder (F04).
read S18GRANTS_TO_USERS not read (privilege level not requested); limits: owner roles with no holder (F04).
read S19SHARES not read (privilege level not requested); limits: external consumers (F09).
read code_des_routinesCode not read for 1 routine (filtered by privileges or not provided); limits: dynamic SQL (F08).

No finding for: F01, F02, F03, F04, F05, F06, F07, F08, F09, F10. An absence of findings only holds for the reads done (see F12 and the method).

What this report does not quantify

  • Average billed storage: STORAGE_USAGE not read: missing privilege.
  • Storage cost: your contract price not read.
  • Credits consumed: METERING_DAILY_HISTORY not read: missing privilege.
  • Credits in dollars: credits not read.
  • Volume to copy: TABLE_STORAGE_METRICS not read: missing privilege.
  • Copy read time: volume not read.
  • Copy read credits: volume not read.
  • Copy read cost: credits not read.
  • Billed history: TABLE_STORAGE_METRICS not read: missing privilege.
  • Your contract rate: your contract price not read.
  • Destination storage, running both platforms in parallel, operations after the exit: depend on your contract and your architecture.
  • Identical results of translated queries: accepted ≠ identical result: translated to DuckDB, not compared; a canot drill compares the results.
  • Cost projections provided by the platform: not used: they cannot be verified from the scan.

Using this report for your regulatory work (GDPR, DORA, NIS2, Data Act, SecNumCloud, EBA)

These elements can support your own work on GDPR, DORA, NIS2, the Data Act, SecNumCloud or the EBA outsourcing guidelines. They are evidence, not a finding: this report is not a certification, it is not legal advice, and it does not say whether your contracts or your organization meet any regulation.

FrameworkWhat it asks, in shortWhat this report gives youWhat it does not cover
DORA (Regulation (EU) 2022/2554)Art. 28(8) and 30(3)(f): a realistic transition, with an adequate period.Measured throughput and a recovery time range from the exercise; a copy duration range (estimated) in the scan.Excludes human validation and the cutover of your applications.
DORA (Regulation (EU) 2022/2554)Art. 28: knowing what depends on the ICT provider.What does not move as is: views, routines, tasks, policies, external dependencies, with the evidence behind each finding.An inventory of the platform, not of your contracts or of the applications connected to it.
Data Act (Regulation (EU) 2023/2854)Art. 29: switching charges are withdrawn from 12 January 2027.The effort that remains yours: read cost, copy duration and rework estimates, each marked measured, computed or estimated.Says nothing about charges your provider may still apply before that date. Prices are dated catalogue figures, not your contract.
GDPR (Regulation (EU) 2016/679)Chapter V (transfers) and Art. 32 (security of processing).Where the copy is hosted, and which security objects do not move with it (masking and row policies, tags).The hosting location is the destination you chose. The legal assessment of a transfer is yours.
GDPR (Regulation (EU) 2016/679)Art. 5(1)(c): data minimisation.The scan reads metadata and execution history, not table contents. SQL text is masked and identities are pseudonymised.Applies to the scan only: an exit exercise (drill) reads the data it copies.
NIS2 (Directive (EU) 2022/2555)Art. 21(2)(d): security of the supply chain, including your relationship with each direct service provider.What ties you to this provider: external dependencies and objects that do not move as is, with the evidence behind each finding.Does not assess the provider's security measures.
EBA Guidelines on outsourcing arrangements (EBA/GL/2019/02)Exit strategies: documented, realistic, sufficiently tested and reviewed periodically for the outsourcing the guidelines target.The exit exercise (drill) and the inventory of what does not move (scan), as test evidence in your exit file.One exercise. Alternative providers, the business side and the periodic review are yours. Check which text applies to you alongside DORA.

References as of 2026-10-19. Check the current texts: they evolve, and their application depends on your situation.

Method

5 reads done out of 19. Each read is recorded with its status and its reason; a value that was not read stays empty, never 0.

IdViewStatusReasonRowsWindowLatency
S03TABLE_STORAGE_METRICSnot readmissing privilege; limits: active bytes and history (F05, F06, F07, ranges)not read
S04STORAGE_USAGEnot readmissing privilege; limits: average billed storagenot read
S05METERING_DAILY_HISTORYnot readmissing privilege; limits: credits per servicenot read
S06WAREHOUSE_METERING_HISTORYnot readmissing privilege; limits: credits per warehousenot read
S07TABLE_DML_HISTORYnot readmissing privilege; limits: latest writes (movement)not read
S08TABLE_QUERY_PRUNING_HISTORYnot readmissing privilege; limits: fallback for reads per table (F05)not read
S12TASK_HISTORYnot readtimed out; limits: task runs and failures (F11)not read
S13QUERY_HISTORYnot readprivilege level not requested; limits: query families, replayability, observed writes (F03)not read
S14ACCESS_HISTORYnot readprivilege level not requested; limits: reads per object: F05 not computed; edition not determined (Standard or missing privilege)not read
S15POLICY_REFERENCESnot readprivilege level not requested; limits: applied policies (F10)not read
S16TAG_REFERENCESnot readprivilege level not requested; limits: tags (F10)not read
S17GRANTS_TO_ROLESnot readprivilege level not requested; limits: owner roles with no holder (F04)not read
S18GRANTS_TO_USERSnot readprivilege level not requested; limits: owner roles with no holder (F04)not read
S19SHARESnot readprivilege level not requested; limits: external consumers (F09)not read
S01TABLESread101.5 h
S02COLUMNSread10
S09VIEWSread10
S10PROCEDURESread10
S11TASKSread10

Privileges used

Level 3: SNOWFLAKE.OBJECT_VIEWER, SNOWFLAKE.USAGE_VIEWER, SNOWFLAKE.GOVERNANCE_VIEWER, SNOWFLAKE.SECURITY_VIEWER. Never requested: IMPORTED PRIVILEGES, MANAGE GRANTS, IMPORT SHARE, USAGE on functions, READ on stages.

Cost of the scan

ItemValueNature and basis
Queries sent12 queries
  • one read = one query
computed · S01, S02, S03, S04, S05, S06 …
reads attempted, read or refused by the platform
Read timeNot read: duration not provided by collection.not read

Safeguards

  • Every SQL statement sent goes through a read-only guard: only SELECT, SHOW, DESCRIBE and ALTER SESSION SET statements go out. No write, no API activation, no parameter change.
  • Query users and roles pseudonymized with HMAC, using a salt drawn for this scan and never written; tag values hashed; locations reduced to the bucket.
  • Raw SQL text is never written: only normalized forms, with literals masked, leave collection.

Rules

  • Movement: recreated: DDL less than 7 days old with no later write; live: write less than 30 days old; frozen: older last write; not determined: writes not read.
  • Storage with no read: actual window of the view read, compared with 365 days; the blind spots of each view are listed in the finding.
  • Copy time: assumed throughput of 20 to 80 MB/s.
  • List prices are dated and sourced; they do not replace your contract price.

Next steps

This report describes your platform; it recommends neither leaving nor staying.

To measure an exit on a chosen scope: canot drill copies to Apache Iceberg, compares source and copy, and signs an evidence report.

To go further, the q4o assessment, from €22,000 excl. VAT: your contract rate, actual execution, scenarios, the steps to follow. canot.io