Catégories :

Fonctions de table

VALIDATE

Valide les fichiers chargés lors d’une exécution passée de la commande COPY INTO <table> et renvoie toutes les erreurs rencontrées lors du chargement, plutôt que seulement la première erreur.

Syntaxe

VALIDATE( [<namespace>.]<table_name> , JOB_ID => { '<query_id>' | _last } )

Arguments

[espace_noms.]nom_table

Spécifie le nom complet de la table qui était la cible du chargement.

L’espace de noms est la base de données et / ou le schéma dans lequel réside la table, sous la forme nom_base_données.nom_schéma ou nom_schéma. Il est facultatif si une base de données et un schéma sont actuellement utilisés dans la session utilisateur. Dans le cas contraire, il est nécessaire.

JOB_ID => id_requête | _last

ID pour que la commande COPY INTO <table> soit validée :

  • Vous pouvez obtenir l’ID à partir de la colonne Query ID de la page History History tab de l’interface Web de Snowflake. L’ID de requête spécifié doit concerner la table cible spécifiée.

  • Si _last est spécifié au lieu de id_requête, la fonction valide le dernier chargement exécuté pendant la session en cours, quelle que soit la table cible spécifiée.

Notes sur l’utilisation

  • Cette fonction ne prend pas en charge les instructions COPY INTO <table> qui transforment des données pendant un chargement.

  • La validation ne renvoie aucun résultat pour les instructions COPY spécifiant ON_ERROR = ABORT_STATEMENT (valeur par défaut).

  • La validation échoue si :

    • L’utilisateur actuel n’a pas accès à nom_table.

    • L’utilisateur actuel n’est pas l’utilisateur qui a exécuté id_requête et ne dispose pas des privilèges de contrôle d’accès sur cet utilisateur.

  • Si de nouveaux fichiers ont été ajoutés à la zone de préparation utilisée par id_requête depuis l’exécution du chargement, les nouveaux fichiers ajoutés sont ignorés lors de la validation.

  • Si des fichiers ont été supprimés de la zone de préparation utilisée par id_requête depuis l’exécution du chargement, les fichiers supprimés sont signalés comme étant manquants.

Exemples

COPY INTO t1 FROM @%t1
  PATTERN='.*tw01.*'
  FILE_FORMAT=(NULL_IF=('') FIELD_OPTIONALLY_ENCLOSED_BY='"')
  ON_ERROR = SKIP_FILE;

COPY INTO t1;
FAILURE: Error parsing JSON: unterminated string
  File 'tables/530049/bad.json.gz', line 120
  Row 0 starts at line 1, column V
  If you would like to continue loading when an error is encountered, use other values such as 'SKIP_FILE' or 'CONTINUE' for the ON_ERROR option. For more information on loading options, please run 'info loading_data' in a SQL client.

Renvoyez les erreurs pour la dernière commande COPY exécutée :

SELECT * FROM TABLE(VALIDATE(t1, JOB_ID => '_last'));

-----------------------------------------------------------------+---------------------------+------+-----------+-------------+----------+--------+-----------+-------------+------------+----------------+
                              ERROR                              |           FILE            | LINE | CHARACTER | BYTE_OFFSET | CATEGORY |  CODE  | SQL_STATE | COLUMN_NAME | ROW_NUMBER | ROW_START_LINE |
-----------------------------------------------------------------+---------------------------+------+-----------+-------------+----------+--------+-----------+-------------+------------+----------------+
 Error parsing JSON: unterminated string                         | tables/530049/bad.json.gz | 120  | [NULL]    | 7504        | parsing  | 100069 | 22P02     | V           | 0          | 1              |
 Error parsing JSON: misplaced colon                             | tables/530049/bad.json.gz | 214  | 18        | 84465       | parsing  | 100069 | 22P02     | V           | 2          | 214            |
 Error parsing JSON: unknown keyword "tru"                       | tables/530049/bad.json.gz | 1467 | [NULL]    | 85337       | parsing  | 100069 | 22P02     | V           | 3          | 1445           |
 Error parsing JSON: unknown keyword "stat"                      | tables/530049/bad.json.gz | 1469 | 13        | 85353       | parsing  | 100069 | 22P02     | V           | 5          | 1469           |
 Error parsing JSON: unknown keyword "ok"                        | tables/530049/bad.json.gz | 1469 | 20        | 85360       | parsing  | 100069 | 22P02     | V           | 7          | 1469           |
 Error parsing JSON: invalid character outside of a string: '\\' | tables/530049/bad.json.gz | 1469 | 21        | 163414      | parsing  | 100069 | 22P02     | V           | 8          | 1469           |
 Error parsing JSON: misplaced }                                 | tables/530049/bad.json.gz | 1470 | 3         | 163418      | parsing  | 100069 | 22P02     | V           | 9          | 1469           |
-----------------------------------------------------------------+---------------------------+------+-----------+-------------+----------+--------+-----------+-------------+------------+----------------+

Renvoyez les erreurs en spécifiant un ID de requête obtenu à partir de l’interface Web :

SELECT * FROM TABLE(VALIDATE(t1, JOB_ID=>'5415fa1e-59c9-4dda-b652-533de02fdcf1'));

Même requête que ci-dessus, mais enregistrez les résultats dans une table pour référence future :

CREATE OR REPLACE TABLE save_copy_errors AS SELECT * FROM TABLE(VALIDATE(t1, JOB_ID=>'5415fa1e-59c9-4dda-b652-533de02fdcf1'));