Dossier de preuve : exercice de sortie

Source : duckdb:demo.duckdb · Cible : local:iceberg · Constat daté du 19/10/2026 à 10:34, sur le périmètre exécuté · Canot 0.2.0

Synthèse

Sortie faisable sur ce périmètre. 2 points à traiter avant de partir.

Identique
Le contenu arrive, à une précision près.Les 8 tables soit 8 661 245 lignes ont été copiées puis comparées : nombre de lignes statistiques par colonne et empreinte du contenu. Seules les colonnes signalées plus bas diffèrent.
3 sur 4
Vos rapports donnent presque les mêmes chiffres.4 requêtes de reporting ont été rejouées des deux côtés. 3 rendent exactement le même résultat.
À traiter
Un rapport rend un résultat différent.select * from tpch.lineitem order by l_orderkey, l_linenumber limit 50… : ligne triée 0, colonne 16 : Timestamp('1996-02-12 00:00:00.000001001') / datetime.datetime(1996, 2, 12, 0, 0, 0, 1). Les chiffres sont peut-être justes et la présentation diffère : mieux vaut le savoir avant le départ.
À traiter
1 colonne(s) perdent de la précision à l'arrivée.tpch.lineitem.l_loaded_at : TIMESTAMP_NS devient timestamp[us]. Les valeurs diffèrent au-delà de la précision du type d'arrivée. Ce n'est pas une corruption : c'est un choix de type à décider avant de partir.
Signé
Toute modification du journal se voit.Chaque étape est enregistrée dans un journal signé avec une clé créée chez vous. La signature garantit l'intégrité du journal, pas l'identité de son auteur ni la date : l'empreinte de la clé est indiquée en bas du dossier.
Constat : écarts à examiner — 7/8 tables identiques, 3/4 requêtes identiques, 0 non rejouables, 1 avec écart, 1 conversion(s) avec perte possible.

Mesures de cet exercice

Ces mesures décrivent cet exercice, sur ce périmètre. Elles ne comparent pas deux plateformes.

Où est la copie

Destination : local:iceberg · emplacement : …/iceberg/warehouse · catalogue : SQLite (catalog.db dans le dossier de sortie).
La copie est au format Apache Iceberg : vous pouvez la relire sans Canot. Le fichier relire.sql à côté de ce dossier contient les commandes DuckDB pour le faire.

Tables

TableLignes sourceLignes cibleRésultatDétail
tpch.customer150000150000identique
tpch.lineitem60012156001215précisionl_loaded_at.min : Timestamp('1992-01-31 00:00:00.287971001') / datetime.datetime(1992, 1, 31, 0, 0, 0, 287971); l_loaded_at.max : Timestamp('1998-10-31 00:00:05.354144001') / datetime.datetime(1998, 10, 31, 0, 0, 5, 354144)
tpch.nation2525identique
tpch.orders15000001500000identique
tpch.part200000200000identique
tpch.partsupp800000800000identique
tpch.region55identique
tpch.supplier1000010000identique

Requêtes rejouées des deux côtés

RequêteRésultatDétail
select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice * (1 - l_dmatch
select l_orderkey, sum(l_extendedprice * (1 - l_discount)) as revenue, o_orderdate from tpch.customer, tpch.orders, tpch.lineitem where c_mkmatch
select sum(l_extendedprice * l_discount) as revenue from tpch.lineitem where l_shipdate >= date '1994-01-01' and l_shipdate < date '1995-01-match
select * from tpch.lineitem order by l_orderkey, l_linenumber limit 50mismatchligne triée 0, colonne 16 : Timestamp('1996-02-12 00:00:00.000001001') / datetime.datetime(1996, 2, 12, 0, 0, 0, 1)

Conversions de types

tpch.lineitem.l_loaded_atTIMESTAMP_NS → timestamp[us]ns -> us (Iceberg v2 ne garde pas les nanosecondes) (perte possible)

Ce qui ne part pas tel quel

Colonnes à type propre à la plateforme : 0. Objets à reconstruire (vues, procédures, tâches…) :

TypeNombreExemples
aucun détecté

Ce que ces chiffres ne disent pas

Tolérances appliquées

{"float_rel": 1e-09, "decimal_abs": 0.0, "columns": {}}

Intégrité du dossier

Journal chaîné : 23 entrées, dernière empreinte 9cafe72219d813cac7cb580e770a671f7427ee1a97d8befcdafb219ca1d0793b. Toute modification du journal se voit. Vérification : canot verify-evidence dossier

Empreinte de la clé publique de signature : 47371597 1591e860 04c9cf93 0acc0d7d. La signature garantit l'intégrité du journal. Elle n'établit ni l'identité de l'auteur ni la date : pour cela, conservez le dossier dans votre propre archivage horodaté.

Ce rapport est un relevé de mesures pour votre propre évaluation. Ce n'est pas une certification et il ne dit pas si vos contrats ou votre organisation sont conformes à un règlement.

Ce dossier couvre le périmètre que vous avez choisi. Pour l'obtenir sur votre environnement, avec trois scénarios de coût de sortie et la marche à suivre : canot.io.