Scope

Capabilities

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

LevelThis reportCanot on BigQuery
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

BigQuery connector: tested; recorded test: canot drill, 2026-10-13: public dataset thelook_ecommerce (docs/ecarts.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: 180 days. On-demand and reserved: two billing models, never added together.

On demand

ItemValueNature and basis
Billed bytes3.8 TBmeasured · B10, B11, B12
Queries1,200 queriesmeasured · B10, B11, B12
In dollars$0.00 to $21.88
  • on-demand list price as of 17/10/2026: $6.25 per TiB (US rate; region to confirm), https://cloud.google.com/bigquery/pricing
  • high: no free tier deducted; low: 1 free TiB per month touched by the window; the free tier is shared by the billing account, it cannot be attributed per project
  • your contract price not read
  • billed bytes NULL for queries on tables with a row access policy: not counted
estimated, low confidence · B10, B11, B12
billed TiB × list price, free tier deducted or not

Reserved

ItemValueNature and basis
Slot-hours820.5 slot-hoursmeasured · B10, B11, B12
Queries300 queriesmeasured · B10, B11, B12
In dollarsNot estimated: your contract price not read.not estimated

On demand and reserved do not add up: two billing models, two bases.

Storage

ItemValueNature and basis
Average billed storageNot read: not provided by collection.not read
Storage in dollarsNot estimated: your contract price not read.not estimated

Movements

2 frozen, 7 live, 0 recreated, 0 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: B03, B04, B05, B07, B10, B11 ….

TableTypeVolumeMovementEvidence
lab-a.archive.archive_2023TABLE3 GBfrozenlast write on 2025-03-01
lab-a.raw.ordersTABLE900 MBlivelast write on 2026-10-15
lab-a.raw.read_by_api_onlyTABLE700 MBfrozenlast write on 2026-09-01
lab-a.raw.customersTABLE200 MBlivelast write on 2026-10-15
lab-a.raw.events_20261001TABLE120 MBlivelast write on 2026-10-15
lab-a._tmp.scratchTABLE50 MBlivelast write on 2026-10-15
lab-a.raw.orders_snapSNAPSHOT10 MBlivelast write on 2026-10-15
lab-a.ext.gcs_eventsEXTERNALnot readlivelast write on 2026-10-15
lab-a.ext.sheet_targetsEXTERNALnot readlivelast write on 2026-10-15

What does not leave with the copy

Objects to rebuild or describe

TypeCountExamples
function1lab-a.mart.js_clean
ML model1lab-a.ml.churn
share1lab-a.hub.listing_sales
row access policy1lab-a.raw.rap_country
procedure1lab-a.mart.sp_rebuild
scheduled query4lab-a.sq_daily_kpi, lab-a.sq_export, lab-a.sq_old, lab-a.sq_weekly
view2lab-a.mart.v_legacy, lab-a.mart.v_sheet
materialized view1lab-a.mart.mv_daily

Routines per language: JAVASCRIPT 1, SQL 1.

Columns with a platform-specific type (3)

TableColumnType
lab-a.raw.customersgeoGEOGRAPHY
lab-a.raw.events_20261001payloadJSON
lab-a.raw.events_20261001ctxSTRUCT<a INT64, b STRING>

Billed history

ItemValueNature and basis
Time Travel and Fail-safe (1 table)250 MBcomputed · B07
Time Travel + Fail-safe of present tables, + bytes still billed for dropped tables

Dependencies

External dependencies (F01)

ObjectTypeLocation
lab-a.ext.gcs_eventstablegs://lab-bucket
lab-a.ext.sheet_targetstabledocs.google.com

Hidden external dependencies (F02)

ObjectPathLocation
lab-a.mart.v_sheetlab-a.mart.v_sheet → lab-a.ext.sheet_targetsdocs.google.com

Writes outside the platform (F03)

SourceModeDestination
family 066b5f1f3a39observedgs://bucket-x
object lab-a.sq_exportdeclaredgs://lab-exports

External consumers (F09)

ShareAccounts
lab-a.hub.listing_sales1

Tools seen in queries

ToolFamiliesExecutions
unidentified3903
looker110

Query replayability

CategoryMeaningFamiliesExecutionsWeight
C0translated and accepted by DuckDB1101 MB
C1not parseable000 B
C2command, not analyzed000 B
C3translation impossible000 B
C4DuckDB parse error11not read
C5binding error (platform-specific object or function)19002 TB
C6variable000 B
C7DDL, COPY, MERGE, metadata queries: counted separately1250 kB
ItemValueNature and basis
C0 rate, by families33.3%computed · B10, B11, B12
translated and accepted by DuckDB (C0) / C0 to C6; C7 counted separately
C0 rate, by executions1.1%computed · B10, B11, B12
translated and accepted by DuckDB (C0) / C0 to C6; C7 counted separately
C0 rate, weighted0.0%
  • weight read for 2/3 families
computed · B10, B11, B12
translated and accepted by DuckDB (C0) / C0 to C6; C7 counted separately

Based on: 1/3 families, window not read, sqlglot X, duckdb X.

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

1 family containing a secret, counted then set aside.

Platform-specific functions

FunctionFamilies
predict1

Most executed families (normalized forms)

CategoryExecutionsToolNormalized form
C5900SELECT * FROM `lab-a.raw.orders` WHERE d >= ?
C010lookerSELECT count(*) FROM `lab-a.raw.customers`
C72EXPORT DATA OPTIONS (uri=?, FORMAT=?) AS SELECT * FROM `lab-a.raw.orders`
C41SELECT ML.PREDICT(MODEL `lab-a.raw.m`, (SELECT ?))

Ranges

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

ItemValueNature and basis
Volume to copy5 GB
  • active bytes of present tables, excluding external and temporary tables
computed · B07
sum of active bytes
Copy read time1 min to 4 min
  • assumed throughput of 20 to 80 MB/s, replaced by the measurement of a canot drill
estimated, low confidence · B07
volume ÷ assumed throughput
Copy read costNot estimated: your contract price not read.
  • read through the Storage Read API, billed per TiB read, and network egress out of Google Cloud
not estimated
Rework3.0 d to 18.0 d
  • 11 objects to rebuild and 3 columns 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 · B13, B19, B20
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.

F01 · External dependencyTo review

2 findings

TargetObserved
table lab-a.ext.gcs_eventsExternal table: data outside the platform (gs://lab-bucket).
table lab-a.ext.sheet_targetsExternal table: data outside the platform (docs.google.com).

F02 · Hidden external dependencyTo review

1 finding

TargetObserved
object lab-a.mart.v_sheetDepends on lab-a.ext.sheet_targets, outside the platform, through 1 level: lab-a.mart.v_sheet → lab-a.ext.sheet_targets (docs.google.com).

F03 · Write outside the platformTo review

2 findings

TargetObserved
family 066b5f1f3a39Write outside the platform observed: 2 executions; destination: gs://bucket-x.
object lab-a.sq_exportScheduled query that writes outside the platform (declared in its definition); destination: gs://lab-exports.

F05 · Storage with no observed readTo review

2 findings

TargetObserved
table lab-a.archive.archive_20233 GB stored. No read observed in INFORMATION_SCHEMA.JOBS from 2026-04-20 to 2026-10-17; blind spots: reads through the Storage Read API, queries run from other projects, Analytics Hub consumers.
table lab-a.raw.read_by_api_only700 MB stored. No read observed in INFORMATION_SCHEMA.JOBS from 2026-04-20 to 2026-10-17; blind spots: reads through the Storage Read API, queries run from other projects, Analytics Hub consumers.

F06 · Billed history that does not transferTo review

1 finding

TargetObserved
table lab-a.raw.orders250 MB of billed history (Time Travel and Fail-safe), retention 7 days, for 900 MB active; this history does not leave with the copy.

F08 · Dynamic SQLTo review

1 finding

TargetObserved
object lab-a.mart.sp_rebuildProcedure (SQL): builds SQL at run time; the objects it touches cannot be read from the code.

F09 · External consumersTo review

1 finding

TargetObserved
object lab-a.hub.listing_salesShare to 1 subscriber; 1 shared object. Consumer reads are not seen by this scan.

F10 · Security to rebuildTo review

2 findings

TargetObserved
object lab-a.raw.rap_countryRow access policy applied to 1 object; it does not leave with the copy; the copy requires an unfiltered principal.
table lab-a.raw.customersPolicies: pt-pii, rap_country. They do not leave with the copy; the copy requires a principal not filtered by these policies.

F11 · Scheduled chain and its failuresTo review

4 findings

TargetObserved
object lab-a.sq_daily_kpiScheduled query, schedule every 24 hours, state active; 180 runs, 3 failures, last on 2026-10-17.
object lab-a.sq_exportScheduled query, schedule every day 05:00, state active; 180 runs, 0 failures.
object lab-a.sq_oldScheduled query, schedule every 1 hours, state disabled; 0 runs, 0 failures.
object lab-a.sq_weeklyScheduled query, schedule every monday 06:00, state active; 26 runs, 0 failures.

F12 · Incomplete readTo review

3 findings

TargetObserved
read B15API connections.list not read (missing privilege); limits: external connections (F01).
read B18`region-eu`.INFORMATION_SCHEMA.RESERVATIONS not read (privilege level not requested); limits: reserved capacity.
read B22`region-eu`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION not read (privilege level not requested); limits: queries run from other projects.

No finding for: F04, F07. An absence of findings only holds for the reads done (see F12 and the method).

What this report does not quantify

Using this report for GDPR, DORA, the Data Act and SecNumCloud

These elements can support your own work on GDPR, DORA, the Data Act or SecNumCloud. 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.

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

Method

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

IdViewStatusReasonRowsWindowLatency
B06`region-eu`.INFORMATION_SCHEMA.TABLE_STORAGEnot readabsent or not exposed; limits: none: tables.get read insteadnot read
B15API connections.listnot readmissing privilege; limits: external connections (F01)not read
B18`region-eu`.INFORMATION_SCHEMA.RESERVATIONSnot readprivilege level not requested; limits: reserved capacitynot read
B22`region-eu`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATIONnot readprivilege level not requested; limits: queries run from other projectsnot read
B01API datasets.listread10
B02API datasets.getread10
B03`region-eu`.INFORMATION_SCHEMA.TABLESread10
B04`region-europe-west1`.INFORMATION_SCHEMA.TABLESread10
B05`region-us`.INFORMATION_SCHEMA.TABLESread10
B07API tables.getread10
B08`region-eu`.INFORMATION_SCHEMA.TABLE_OPTIONSread10
B09`region-eu`.INFORMATION_SCHEMA.COLUMN_FIELD_PATHSread10
B10`region-eu`.INFORMATION_SCHEMA.JOBSread10from 2026-04-20 to 2026-10-170.1 h
B11`region-europe-west1`.INFORMATION_SCHEMA.JOBSread10from 2026-04-20 to 2026-10-170.1 h
B12`region-us`.INFORMATION_SCHEMA.JOBSread10from 2026-04-20 to 2026-10-170.1 h
B13API transferConfigs.listread10
B14API rowAccessPolicies.listread10
B16`region-eu`.INFORMATION_SCHEMA.SCHEMATA_LINKSread10
B17`region-eu`.INFORMATION_SCHEMA.SHARED_DATASET_USAGEread10
B19`region-eu`.INFORMATION_SCHEMA.ROUTINESread10

… and 2 more in reads.csv.

Privileges used

Level 3: bigquery.jobs.create, jobs.listAll, datasets.get, tables.list, tables.get, routines.list, routines.get, models.list, models.getMetadata, rowAccessPolicies.list, transfers.get, connections.list, dataPolicies.list (optional), reservations.list, reservationAssignments.list, capacityCommitments.list, organization-level permissions. Never requested: tables.getData, bigquery.user and jobUser roles.

Cost of the scan

ItemValueNature and basis
Queries sent20 queries
  • one read = one query
computed · B01, B02, B03, B04, B05, B06 …
reads attempted, read or refused by the platform
Read timeNot read: duration not provided by collection.not read

Safeguards

Rules

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