Description
Template permet à l’utilisateur de définir sa propre chaîne de format avec des espaces réservés pour les valeurs,
ainsi que de spécifier des règles d’échappement pour les données.
Il utilise les paramètres suivants :
Paramètres et règles d’échappement
format_template_row
format_template_row indique le chemin du fichier contenant les chaînes de format des lignes, selon la syntaxe suivante :
Les règles d’échappement suivantes sont prises en charge :
Si aucune règle d’échappement n’est indiquée,
None sera utilisé. XML convient uniquement à la sortie.SELECT) ou attendues (si vous utilisez INPUT),
entre les délimiteurs de colonnes Search phrase:, , count:, , ad price: $ et ;, respectivement :
s(avec la règle d’échappementQuoted)c(avec la règle d’échappementEscaped)p(avec la règle d’échappementJSON)
- Lors d’un
INSERT, la ligne ci-dessous correspond au modèle attendu et permettrait de lire les valeursbathroom interior design,2166,$3dans les colonnesSearch phrase,count,ad price. - Lors d’un
SELECT, la ligne ci-dessous correspond à la sortie, en supposant que les valeursbathroom interior design,2166,$3sont déjà stockées dans une table dans les colonnesSearch phrase,count,ad price.
format_template_rows_between_delimiter
format_template_rows_between_delimiter spécifie le délimiteur entre les lignes, imprimé (ou attendu) après chaque ligne, sauf la dernière (\n par défaut)
format_template_resultset
format_template_resultset spécifie le chemin vers le fichier qui contient une chaîne de format pour le jeu de résultats.
La chaîne de format du jeu de résultats a la même syntaxe qu’une chaîne de format pour les lignes.
Elle permet de définir un préfixe, un suffixe et une façon d’afficher des informations supplémentaires, et contient les espaces réservés suivants au lieu des noms de colonnes :
datacorrespond aux lignes de données au formatformat_template_row, séparées parformat_template_rows_between_delimiter. Cet espace réservé doit être le premier de la chaîne de format.totalscorrespond à la ligne contenant les valeurs totales au formatformat_template_row(lors de l’utilisation de WITH TOTALS).mincorrespond à la ligne contenant les valeurs minimales au formatformat_template_row(lorsque extremes est défini sur 1).maxcorrespond à la ligne contenant les valeurs maximales au formatformat_template_row(lorsque extremes est défini sur 1).rowscorrespond au nombre total de lignes en sortie.rows_before_limitcorrespond au nombre minimal de lignes qu’il y aurait eu sans LIMIT. Il n’est produit que si la requête contient LIMIT. Si la requête contient GROUP BY, rows_before_limit_at_least correspond au nombre exact de lignes qu’il y aurait eu sans LIMIT.timecorrespond au temps d’exécution de la requête, en secondes.rows_readcorrespond au nombre de lignes lues.bytes_readcorrespond au nombre d’octets (non compressés) lus.
data, totals, min et max ne doivent pas avoir de règle d’échappement spécifiée (ou None doit être spécifié explicitement). Les autres espaces réservés peuvent avoir n’importe quelle règle d’échappement.
Si le paramètre
format_template_resultset est une chaîne vide, ${data} est utilisé comme valeur par défaut.spécification en ligne
format_template_row, format_template_resultset) du format Template dans un répertoire sur tous les nœuds d’un cluster.
De plus, le format peut être si simple qu’il n’est pas nécessaire de le placer dans un fichier.
Dans ce cas, format_template_row_format (pour format_template_row) et format_template_resultset_format (pour format_template_resultset) peuvent être utilisés pour définir directement la chaîne de modèle dans la requête,
plutôt que sous la forme d’un chemin vers le fichier qui la contient.
Les règles relatives aux chaînes de format et aux séquences d’échappement sont les mêmes que pour :
format_template_rowlors de l’utilisation deformat_template_row_format.format_template_resultsetlors de l’utilisation deformat_template_resultset_format.
Exemple d’utilisation
Template : d’abord pour sélectionner des données, puis pour en insérer.
Sélection des données
Query
/some/path/resultset.format
/some/path/row.format
Response
Insertion de données
/some/path/resultset.format
/some/path/row.format
PageViews, UserID, Duration et Sign à l’intérieur des espaces réservés sont des noms de colonnes de la table. Les valeurs situées après Useless field dans les lignes et après \nTotal rows: dans le suffixe seront ignorées.
Tous les délimiteurs des données d’entrée doivent correspondre strictement aux délimiteurs des chaînes de format spécifiées.
Spécification en ligne
Template et les paramètres de spécification en ligne pour accomplir une tâche simple : effectuer un SELECT sur les noms de quelques formats ClickHouse dans la table system.formats et les mettre en forme sous forme de tableau Markdown. Cela se fait facilement à l’aide du format Template et des paramètres format_template_row_format et format_template_resultset_format.
Dans les exemples précédents, nous avons spécifié les chaînes de format du jeu de résultats et des lignes dans des fichiers distincts, dont les chemins étaient indiqués à l’aide des paramètres format_template_resultset et format_template_row, respectivement. Ici, nous allons le faire en ligne, car notre modèle est trivial et ne contient que quelques | et - pour construire le tableau Markdown. Nous allons spécifier notre chaîne de modèle pour le jeu de résultats à l’aide du paramètre format_template_resultset_format. Pour créer l’en-tête du tableau, nous avons ajouté |ClickHouse Formats|\n|---|\n avant ${data}. Nous utilisons le paramètre format_template_row_format pour définir la chaîne de modèle |`{0:XML}`| pour nos lignes. Le format Template insérera nos lignes, avec le format indiqué, à l’espace réservé ${data}. Dans cet exemple, nous n’avons qu’une seule colonne, mais si vous vouliez en ajouter d’autres, vous pourriez le faire en ajoutant {1:XML}, {2:XML}… etc. à votre chaîne de modèle de ligne, en choisissant la règle d’échappement appropriée. Dans cet exemple, nous avons retenu la règle d’échappement XML.
Query
| et - pour créer ce tableau Markdown :
Response