Fonctions de table

Une fonction de tableau renvoie un ensemble de lignes pour chaque ligne d’entrée. L’ensemble renvoyé peut contenir zéro, une ou plusieurs lignes, chacune d’entre elles pouvant contenir une ou plusieurs colonnes.

Par exemple, les fonctions suivantes sont appropriées en tant que fonctions de table :

  • Une fonction qui accepte une date comme argument et renvoie un ensemble de lignes énumérant les villes qui ont connu des températures élevées record à cette date. (Plusieurs villes pourraient atteindre des températures record à la même date).

  • Une fonction qui accepte un numéro de compte et une date, et renvoie tous les frais facturés à ce compte à cette date. (Plus d’un frais peut avoir été facturé à une date donnée).

Dans chacun de ces exemples, la fonction peut renvoyer zéro ligne (par exemple, s’il n’y a pas de record de température à cette date), une ligne (si une ville a connu un record de température à cette date) ou plusieurs lignes (si plusieurs villes ont connu des records de température).

Chaque ligne d’entrée d’une fonction de table est constituée de zéro, d’un ou de plusieurs arguments. Chaque argument doit être une expression scalaire.

Une fonction de table apparaît dans la clause FROM d’une instruction SQL. L’appel à la fonction de table est généralement entouré de TABLE(). Par exemple, l’instruction suivante appelle une fonction de table nommée record_high_temperatures(), qui prend une valeur DATE comme argument :

SELECT city_name, temperature
    FROM TABLE(record_high_temperatures_for_date('2021-06-27'::DATE))
    ORDER BY city_name;

Les fonctions de la table peuvent être regroupées en deux sous-catégories :

  • Fonctions 1-à-n.

  • Fonctions M à N.

Dans une fonction 1-à-N, chaque ligne d’entrée génère N lignes de sortie (où N peut être zéro, un ou plusieurs). Les exemples ci-dessus sont des fonctions 1 à N. Par exemple, chaque fois que la fonction RECORD_HIGH_TEMPERATURES_FOR_DATE() est appelée et qu’une date lui est transmise, la fonction reçoit un ensemble de lignes. Les lignes de chaque date sont indépendantes des lignes de toutes les autres dates. La plupart des fonctions de table sont des fonctions 1-à-N.

Dans une fonction M-à-N, un groupe de M lignes d’entrée produit un groupe de N lignes de sortie. M peut être une ou plusieurs lignes. N peut être zéro, une ou plusieurs lignes. Par exemple, vous pouvez écrire une fonction qui renvoie la moyenne mobile d’un ensemble de M lignes. Supposons que vous vouliez connaître la moyenne mobile sur 10 jours du cours d’une action. Supposons également que vous ne souhaitez pas que la moyenne mobile sur 10 jours génère des lignes de sortie tant que la fonction n’a pas traité au moins 10 lignes, et que vous ne souhaitez pas que la moyenne utilise des lignes provenant de différents mois. Dans cet exemple, pour le mois de janvier, la fonction aurait 31 lignes d’entrée (car le mois de janvier compte 31 jours), et 22 lignes de sortie (la première ligne de sortie est le 10 janvier, et la dernière ligne de sortie est le 31 janvier). Dans cet exemple, M et N varient en fonction de la durée du mois.

Les fonctions de table peuvent être intégrées ou définies par l’utilisateur. Les fonctions de table intégrées sont répertoriées dans Liste des fonctions de table définies par le système. Pour plus d’informations sur les fonctions définies par l’utilisateur, y compris les fonctions de table définies par l’utilisateur, voir Fonctions définies par l’utilisateur (UDFs).

Les fonctions de table sont parfois aussi appelées « fonctions tabulaires ».

Dans ce chapitre :

Liste des fonctions de table définies par le système

Snowflake offre les fonctions de table suivantes définies par le système (par exemple intégrées) :

Sous-catégorie

Fonction

Remarques

Chargement des données

INFER_SCHEMA

Pour plus d’informations, voir Chargement de données dans Snowflake.

VALIDATE

Génération de données

GENERATOR

Conversion de données

SPLIT_TO_TABLE

STRTOK_SPLIT_TO_TABLE

Modélisation d’objet

GET_OBJECT_REFERENCES

Requêtes semi-structurées

FLATTEN

Pour plus d’informations, voir Interrogation de données semi-structurées.

Résultats de la recherche

RESULT_SCAN

Peut être utilisé pour effectuer des opérations SQL sur la sortie d’une autre opération SQL (par ex. SHOW).

Historique et informations d’utilisation (Schéma d’information, Account Usage) :

Connexion utilisateur

LOGIN_HISTORY , LOGIN_HISTORY_BY_USER

Requêtes

QUERY_HISTORY , QUERY_HISTORY_BY_*

Utilisation de l’entrepôt virtuel et de l’espace de stockage

DATABASE_STORAGE_USAGE_HISTORY

WAREHOUSE_LOAD_HISTORY

WAREHOUSE_METERING_HISTORY

STAGE_STORAGE_USAGE_HISTORY

Sécurité au niveau des colonnes et au niveau des lignes

POLICY_REFERENCES

Balises

TAG_REFERENCES TAG_REFERENCES_WITH_LINEAGE

Fonction de table Information Schema . Fonction de table Account Usage

Réplication de base de données

DATABASE_REFRESH_HISTORY DATABASE_REFRESH_PROGRESS , DATABASE_REFRESH_PROGRESS_BY_JOB REPLICATION_USAGE_HISTORY

Pour plus d’informations, voir Réplication de bases de données sur plusieurs comptes

Chargement et transfert des données

COPY_HISTORY

DATA_TRANSFER_HISTORY

PIPE_USAGE_HISTORY

VALIDATE_PIPE_LOAD

Clustering des données (dans des tables)

AUTOMATIC_CLUSTERING_HISTORY

Pour plus d’informations, voir Clustering automatique

Fonctions externes

EXTERNAL_FUNCTIONS_HISTORY

Pour plus d’informations, voir Fonctions externes

Tables externes

AUTO_REFRESH_REGISTRATION_HISTORY

Pour plus d’informations, voir Travailler avec des tables externes

EXTERNAL_TABLE_FILES

EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY

Maintenance des vues matérialisées

MATERIALIZED_VIEW_REFRESH_HISTORY

Pour plus d’informations, voir Travailler avec des vues matérialisées

Maintenance SCIM

REST_EVENT_HISTORY

Pour plus d’informations, voir Audit avec SCIM

Maintenance de l’optimisation de la recherche

SEARCH_OPTIMIZATION_HISTORY

Pour plus d’informations, voir Utilisation du service d’optimisation de la recherche

Maintenance des tâches

TASK_DEPENDENTS

Pour plus d’informations, voir Exécution d’instructions SQL sur une planification à l’aide de tâches

TASK_HISTORY

Syntaxe

SELECT ...
  FROM [ <input_table> [ [AS] <alias_1> ] ,
         [ LATERAL ]
       ]
       TABLE( <table_function>( [ <arg_1> [, ... ] ] ) ) [ [ AS ] <alias_2> ];

Pour connaître la syntaxe spécifique à une fonction, reportez-vous à la documentation relative aux fonctions de table définies par le système.

Notes sur l’utilisation

  • Les fonctions de table peuvent également être appliquées à un ensemble de lignes à l’aide de la construction LATERAL.

  • Pour activer l’utilisation des expressions de table, Snowflake prend en charge la syntaxe standard ANSI/ISO pour les expressions de table dans la clause FROM des requêtes et sous-requêtes. Cette syntaxe est utilisée pour indiquer qu’une expression renvoie une collection de lignes au lieu d’une seule.

  • Cette syntaxe ANSI/ISO n’est valide que dans la clause FROM de la liste SELECT. Vous ne pouvez pas omettre ces mots-clés et parenthèses d’une spécification de sous-requête de collection dans un autre contexte.