alphaTokens
Introduit dans : v1.1.0
Sélectionne les sous-chaînes d’octets consécutifs dans les plages a-z et A-Z, et renvoie un tableau des sous-chaînes sélectionnées.
Syntaxe
alphaTokens(s[, max_substrings])Alias : splitByAlpha
Arguments
s— La chaîne à découper.Stringmax_substrings— Facultatif. Lorsquemax_substrings > 0, le nombre de sous-chaînes renvoyées ne dépassera pasmax_substrings; sinon, la fonction renverra autant de sous-chaînes que possible.Int64
Valeur renvoyée
Renvoie un tableau des sous-chaînes sélectionnées de s. Array(String)
Exemples
Exemple d'utilisation
SELECT alphaTokens('abca1abc');┌─alphaTokens('abca1abc')─┐
│ ['abca','abc'] │
└─────────────────────────┘arrayStringConcat
Introduit dans : v1.1.0
Concatène les représentations sous forme de chaîne des valeurs présentes dans le tableau à l’aide du séparateur fourni, qui est un paramètre facultatif défini par défaut comme une chaîne vide.
Syntaxe
arrayStringConcat(arr[, separator])Alias : array_to_string
Arguments
arr— Le tableau à concaténer.Array(T)separator— Facultatif. Chaîne de séparation. Par défaut, une chaîne vide.const String
Valeur renvoyée
Renvoie la chaîne concaténée. String
Exemples
Exemple d’utilisation
SELECT arrayStringConcat(['12/05/2021', '12:50:00'], ' ') AS DateString;┌─DateString──────────┐
│ 12/05/2021 12:50:00 │
└─────────────────────┘extractAllGroupsVertical
Introduit dans : v20.5.0
Recherche toutes les correspondances de groupes dans une chaîne à l’aide d’une expression régulière et renvoie un tableau de tableaux, où chaque tableau contient les fragments correspondants de chaque groupe, regroupés selon leur ordre d’apparition dans la chaîne d’entrée.
Syntaxe
extractAllGroupsVertical(s, regexp)Alias : extractAllGroups
Arguments
s— Chaîne d’entrée depuis laquelle extraire.StringouFixedStringregexp— Expression régulière à faire correspondre.const Stringouconst FixedString
Valeur renvoyée
Renvoie un tableau de tableaux, où chaque tableau interne contient les groupes capturés pour une correspondance. Chaque correspondance produit un tableau dont les éléments correspondent aux groupes de capture de l’expression régulière (groupe 1, groupe 2, etc.). Si aucune correspondance n’est trouvée, renvoie un tableau vide. Array(Array(String))
Exemples
Exemple d’utilisation
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsVertical(s, '< ([\\w\\-]+): ([^\\r\\n]+)');[['Server','nginx'],['Date','Tue, 22 Jan 2019 00:26:14 GMT'],['Content-Type','text/html; charset=UTF-8'],['Connection','keep-alive']]naiveBayesNgrams
Introduit dans : v26.7.0
Découpe le texte en n-grammes en utilisant la même tokenisation qu'un dictionnaire Naive Bayes (le layout NAIVE_BAYES) : mode byte, codepoint ou token, avec padding optionnel aux limites. Utilisez-le pour créer les données d'entraînement pré-agrégées (ngram, class_id, count) qu'utilise un tel dictionnaire, afin que les n-grammes d'entraînement correspondent exactement à ce que produit naiveBayesClassifier au moment de l'exécution de la query.
Syntaxe
naiveBayesNgrams(text, n, mode[, start_token, end_token])Arguments
text— Texte à découper en n-grammes.Stringn— Taille des n-grammes, de 1 à 1024.const UIntmode— Mode de segmentation en tokens : 'byte', 'codepoint' ou 'token'.const Stringstart_token— Facultatif. Jeton de délimitation ajouté en préfixe (n-1) fois à l’entrée ; un nombre pour 'byte'/'codepoint', un littéral pour 'token'. Une valeur vide signifie qu’aucun remplissage n’est appliqué.const Stringend_token— Facultatif. Jeton de délimitation ajouté en suffixe (n-1) fois à l’entrée.const String
Valeur renvoyée
Les n-grammes du texte d’entrée. Array(String)
Exemples
Bigrammes de tokens
SELECT naiveBayesNgrams('the cat sat', 2, 'token');['the cat','cat sat']Bigrammes de tokens avec padding aux limites
SELECT naiveBayesNgrams('cat', 2, 'token', '<s>', '</s>');['<s> cat','cat </s>']Bigrammes d’octets avec remplissage en bordure (résultat affiché en hexadécimal)
SELECT arrayMap(x -> hex(x), naiveBayesNgrams('xy', 2, 'byte', '0x01', '0xFF'));['0178','7879','79FF']Bigrammes de points de code avec remplissage en bordure (résultat affiché en hexadécimal)
SELECT arrayMap(x -> hex(x), naiveBayesNgrams('ab', 2, 'codepoint', '0x10FFFE', '0x10FFFF'));['F48FBFBE61','6162','62F48FBFBF']ngrams
Introduit dans : v21.11.0
Découpe une chaîne UTF-8 en n-grammes de longueur N.
Syntaxe
ngrams(s, N)Arguments
s— Chaîne d’entrée.StringouFixedStringN— Longueur du n-gramme.const UInt8/16/32/64
Valeur renvoyée
Renvoie un tableau de n-grammes. Array(String)
Exemples
Exemple d’utilisation
SELECT ngrams('ClickHouse', 3);['Cli','lic','ick','ckH','kHo','Hou','ous','use']reverseBySeparator
Introduite dans : v26.2.0
Inverse l'ordre des sous-chaînes d'une chaîne, séparées par un séparateur donné. Cette fonction découpe la chaîne selon le séparateur, inverse l'ordre des parties obtenues, puis les réassemble à l'aide du même séparateur. Elle est utile pour analyser des noms de domaine, des chemins de fichiers ou d'autres données hiérarchiques lorsqu'il faut inverser l'ordre des éléments.
Exemples :
- reverseBySeparator('www.google.com') renvoie 'com.google.www'
- reverseBySeparator('a/b/c', '/') renvoie 'c/b/a'
- reverseBySeparator('x::y::z', '::') renvoie 'z::y::x'
Syntaxe
reverseBySeparator(string[, separator])Arguments
string— La chaîne d’entrée dont il faut inverser l’ordre des segments.Stringseparator— La chaîne utilisée comme séparateur pour identifier les segments. S’il n’est pas fourni, '.' (point) est utilisé. Par défaut : '.'String
Valeur renvoyée
Renvoie une chaîne dont les sous-chaînes sont réordonnées de droite à gauche par rapport à la chaîne d’origine, en utilisant le même séparateur. String
Exemples
Inversion de domaine simple
SELECT reverseBySeparator('www.google.com')com.google.wwwInversion du chemin
SELECT reverseBySeparator('a/b/c', '/')c/b/aSéparateur personnalisé
SELECT reverseBySeparator('x::y::z', '::')z::y::xCas particulier avec des points
SELECT reverseBySeparator('.a.b.', '.').b.a.Élément unique
SELECT reverseBySeparator('single')singleSéparateur vide
SELECT reverseBySeparator('abcde', '')edcbasplitByChar
Introduit dans : v1.1.0
Découpe une chaîne, séparée par la chaîne constante spécifiée separator composée d'exactement un caractère, en un tableau de sous-chaînes.
Des sous-chaînes vides peuvent être renvoyées si le séparateur apparaît au début ou à la fin de la chaîne, ou s'il y a plusieurs séparateurs consécutifs.
Des sous-chaînes vides peuvent être renvoyées dans les cas suivants :
- Un séparateur apparaît au début ou à la fin de la chaîne
- Il y a plusieurs séparateurs consécutifs
- La chaîne d'origine
sest vide
Syntaxe
splitByChar(separator, s[, max_substrings])Arguments
separator— Le séparateur doit être un caractère sur un seul octet.Strings— La chaîne à découper.Stringmax_substrings— Facultatif. Simax_substrings > 0, le tableau renvoyé contiendra au plusmax_substringssous-chaînes ; sinon, la fonction renverra autant de sous-chaînes que possible. La valeur par défaut est0.Int64
Valeur renvoyée
Renvoie un tableau des sous-chaînes sélectionnées. Array(String)
Exemples
Exemple d'utilisation
SELECT splitByChar(',', '1,2,3,abcde');┌─splitByChar(',', '1,2,3,abcde')─┐
│ ['1','2','3','abcde'] │
└─────────────────────────────────┘splitByNonAlpha
Introduit dans : v21.9.0
Découpe une chaîne délimitée par des caractères d’espacement et de ponctuation en un tableau de sous-chaînes.
Syntaxe
splitByNonAlpha(s[, max_substrings])Arguments
s— La chaîne à découper.Stringmax_substrings— Facultatif. Lorsquemax_substrings > 0, le nombre de sous-chaînes renvoyées ne dépassera pasmax_substrings; sinon, la fonction renverra autant de sous-chaînes que possible. Valeur par défaut :0.Int64
Valeur renvoyée
Renvoie un tableau contenant les sous-chaînes sélectionnées de s. Array(String)
Exemples
Exemple d'utilisation
SELECT splitByNonAlpha('user@domain.com');['user','domain','com']splitByRegexp
Introduit dans : v21.6.0
Découpe une chaîne, en utilisant l’expression régulière fournie comme séparateur, en un tableau de sous-chaînes. Si l’expression régulière fournie est vide, la chaîne sera scindée en un tableau de caractères individuels. Si aucune correspondance avec l’expression régulière n’est trouvée, la chaîne ne sera pas scindée.
Des sous-chaînes vides peuvent être produites lorsque :
- une correspondance non vide avec l’expression régulière se produit au début ou à la fin de la chaîne
- plusieurs correspondances non vides avec l’expression régulière se suivent
- la chaîne d’origine est vide alors que l’expression régulière ne l’est pas.
Syntaxe
splitByRegexp(regexp, s[, max_substrings])Arguments
regexp— Expression régulière. Constante.StringouFixedStrings— La chaîne à découper.Stringmax_substrings— Facultatif. Lorsquemax_substrings > 0, le nombre de sous-chaînes renvoyées ne dépassera pasmax_substrings; sinon, la fonction renverra autant de sous-chaînes que possible. Valeur par défaut :0.Int64
Valeur renvoyée
Renvoie un tableau des sous-chaînes sélectionnées de s. Array(String)
Exemples
Exemple d'utilisation
SELECT splitByRegexp('\\d+', 'a12bc23de345f');┌─splitByRegexp('\\d+', 'a12bc23de345f')─┐
│ ['a','bc','de','f'] │
└────────────────────────────────────────┘Expression régulière vide
SELECT splitByRegexp('', 'abcde');┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘splitByString
Introduit dans : v1.1.0
Découpe une chaîne à l’aide d’un separator constant composé de plusieurs caractères en un tableau de sous-chaînes.
Si la chaîne separator est vide, la chaîne s est divisée en un tableau de caractères individuels.
Des sous-chaînes vides peuvent être produites lorsque :
- Un séparateur non vide apparaît au début ou à la fin de la chaîne
- Plusieurs séparateurs non vides se suivent
- La chaîne d’origine
sest vide alors que le séparateur ne l’est pas
Syntaxe
splitByString(separator, s[, max_substrings])Arguments
separator— Le séparateur.Strings— La chaîne à découper.Stringmax_substrings— Facultatif. Lorsquemax_substrings > 0, le nombre de sous-chaînes renvoyées ne dépassera pasmax_substrings; sinon, la fonction renverra autant de sous-chaînes que possible. Valeur par défaut :0.Int64
Valeur renvoyée
Renvoie un tableau contenant les sous-chaînes sélectionnées de s Array(String)
Exemples
Exemple d'utilisation
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');┌─splitByString(', ', '1, 2 3, 4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────────────────────┘Séparateur vide
SELECT splitByString('', 'abcde');┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘splitByWhitespace
Introduit dans : v21.9.0
Découpe une chaîne délimitée par des caractères d’espacement en un tableau de sous-chaînes.
Syntaxe
splitByWhitespace(s[, max_substrings])Arguments
s— La chaîne à découper.Stringmax_substrings— Facultatif. Lorsquemax_substrings > 0, le nombre de sous-chaînes renvoyées ne dépasse pasmax_substrings; sinon, la fonction renvoie autant de sous-chaînes que possible. Valeur par défaut :0.Int64
Valeur renvoyée
Renvoie un tableau des sous-chaînes sélectionnées de s. Array(String)
Exemples
Exemple d'utilisation
SELECT splitByWhitespace(' 1! a, b. ');['1!','a,','b.']tokens
Introduit dans : v21.11.0
Découpe une chaîne en tokens à l’aide du tokenizer indiqué.
Tokenizers disponibles :
splitByNonAlphadécoupe les chaînes sur les caractères ASCII non alphanumériques (voir aussi la fonction splitByNonAlpha).splitByString(S)découpe les chaînes selon certaines chaînes de séparationSdéfinies par l’utilisateur (voir aussi la fonction splitByString). Les séparateurs peuvent être spécifiés à l’aide d’un paramètre facultatif, par exempletokens(value, 'splitByString', [', ', '; ', '\n', '\\']). Notez que chaque chaîne peut être composée de plusieurs caractères (', 'dans l’exemple). La liste de séparateurs par défaut, si elle n’est pas explicitement spécifiée, est un seul espace[' '].splitByRegexp(re)découpe les chaînes selon une expression régulière de séparationredéfinie par l’utilisateur (voir aussi la fonction splitByRegexp). L’expression régulière est obligatoire, par exempletokens(value, 'splitByRegexp', '[^\p{L}\p{N}#+]+'). Contrairement àsplitByString, un séparateur sous forme d’expression régulière peut préserver les tokens contenant des caractères spéciaux (tels queC++ouC#).asciiCJKdécoupe les chaînes en tokens en appliquant les règles Unicode de délimitation des mots (similaires à UAX #29). Les caractères ASCII alphanumériques et les traits de soulignement forment des tokens avec des connecteurs (:pour les lettres,.et'pour les caractères de même type). Les caractères Unicode non ASCII deviennent des tokens d’un seul caractère.chinesesegmente le texte chinois en mots à l’aide d’un dictionnaire et d’un modèle de Markov caché (l’algorithme suit jieba ; le dictionnaire intégré et les données du modèle sont dérivés de cppjieba). Contrairement àasciiCJK, qui traite chaque caractère non ASCII comme un token d’un seul caractère,chineseregroupe les caractères chinois consécutifs en mots, ce qui produit des tokens plus significatifs et une meilleure qualité de recherche pour le texte chinois. Un argument facultatifgranularitypeut êtrecoarse_grained(la valeur par défaut) oufine_grained; ce dernier énumère également les sous-mots qui se chevauchent, améliorant le rappel au prix d’un index plus volumineux.icu(locale)découpe les chaînes en tokens de mots à l’aide de la segmentation Unicode des mots (UAX #29) de la bibliothèque ICU. Pour les écritures sans espace entre les mots (par exemple le chinois, le japonais et le thaï), ICU applique une segmentation fondée sur un dictionnaire, de sorte que ces textes sont découpés en mots significatifs.localecorrespond aux paramètres régionaux ICU transmis au segmenteur (la segmentation dépend principalement de l’écriture et du dictionnaire ; les paramètres régionaux sélectionnent les adaptations propres aux paramètres régionaux d’ICU) ; il est obligatoire et transmis comme argument distinct, par exempletokens(value, 'icu', 'ja').japanesedécoupe le texte japonais en mots à l’aide de l’analyseur morphologique MeCab. Nécessite un dictionnaire configuré dans la configuration du serveur (voir la documentation sur l’index de texte).ngrams(N)découpe les chaînes enN-grammes de taille identique (voir aussi la fonction ngrams). La longueur des ngrams peut être spécifiée à l’aide d’un paramètre entier facultatif compris entre 1 et 8, par exempletokens(value, 'ngrams', 3). La taille de ngram par défaut, si elle n’est pas explicitement spécifiée, est 3.sparseGrams(min_length, max_length, min_cutoff_length)découpe les chaînes en n-grammes de longueur variable comportant au minimummin_lengthcaractères et au maximummax_lengthcaractères (bornes incluses) (voir aussi la fonction sparseGrams). Sauf indication explicite,min_lengthetmax_lengthvalent respectivement 3 et 100. Si le paramètremin_cutoff_lengthest fourni, seuls les n-grammes dont la longueur est supérieure ou égale àmin_cutoff_lengthsont renvoyés. Par rapport àngrams(N), le tokenizersparseGramsproduit des N-grammes de longueur variable, ce qui permet une représentation plus souple du texte d’origine. Par exemple,tokens(value, 'sparseGrams', 3, 5, 4)génère en interne des 3-, 4- et 5-grammes à partir de la chaîne d’entrée, mais seuls les 4- et 5-grammes sont renvoyés.arrayn’effectue aucune tokenisation, c’est-à-dire que chaque valeur de ligne constitue un token (voir aussi la fonction array). Pour assurer la compatibilité avec d’autres systèmes,keywordest disponible comme alias dearray.
Dans le cas du tokenizer splitByString, si les tokens ne forment pas un code préfixe, il est probablement préférable que la correspondance privilégie les séparateurs les plus longs.
Pour ce faire, transmettez les séparateurs par ordre décroissant de longueur.
Par exemple, avec separators = ['%21', '%'], la chaîne %21abc serait tokenisée en ['abc'], tandis qu'avec separators = ['%', '%21'], elle serait tokenisée en ['21ac'] (ce qui n'est probablement pas le résultat souhaité).
Syntaxe
tokens(value) -- 'splitByNonAlpha' tokenizer
tokens(value, 'splitByNonAlpha')
tokens(value, 'splitByString'[, separators])
tokens(value, 'splitByRegexp', regexp)
tokens(value, 'asciiCJK')
tokens(value, 'chinese'[, granularity])
tokens(value, 'icu', locale)
tokens(value, 'japanese')
tokens(value, 'ngrams'[, n])
tokens(value, 'sparseGrams'[, min_length, max_length[, min_cutoff_length]])
tokens(value, 'array')Arguments
value— La chaîne d'entrée.StringouFixedStringtokenizer— Le tokenizer à utiliser. Les valeurs acceptées sontsplitByNonAlpha,splitByString,splitByRegexp,asciiCJK,chinese,icu,japanese,ngrams,sparseGramsetarray. Facultatif ; s'il n'est pas défini explicitement, la valeur par défaut estsplitByNonAlpha.const Stringlocale— Pertinent uniquement si l'argumenttokenizeresticu: paramètre régional obligatoire, par exemple'ja'.const Stringn— Pertinent uniquement si l'argumenttokenizerestngrams: paramètre facultatif qui définit la longueur des n-grammes. S'il n'est pas défini explicitement, la valeur par défaut est3.const UInt8separators— Pertinent uniquement si l'argumenttokenizerestsplit: paramètre facultatif qui définit les chaînes de séparation. S'il n'est pas défini explicitement, la valeur par défaut est[' '].const Array(String)regexp— Pertinent uniquement si l'argumenttokenizerestsplitByRegexp: paramètre obligatoire qui définit le séparateur d'expression régulière.const Stringmin_length— Pertinent uniquement si l'argumenttokenizerestsparseGrams: paramètre facultatif qui définit la longueur minimale des grammes, par défaut3.const UInt8max_length— Pertinent uniquement si l'argumenttokenizerestsparseGrams: paramètre facultatif qui définit la longueur maximale des grammes, par défaut100.const UInt8min_cutoff_length— Pertinent uniquement si l'argumenttokenizerestsparseGrams: paramètre facultatif qui définit la longueur minimale de coupure.const UInt8granularity— Pertinent uniquement si l'argumenttokenizerestchinese: paramètre facultatif,coarse_grained(par défaut) oufine_grained, qui contrôle la granularité de la segmentation.const String
Valeur renvoyée
Renvoie le tableau de tokens résultant de la chaîne d'entrée. Array
Exemples
Tokenizer n-gramme
SELECT tokens('test1,;\\\\ test2,;\\\\ test3,;\\\\ test4') AS tokens;['test1','test2','test3','test4']Tokenizer n-gramme
SELECT tokens('abc def', 'ngrams', 3) AS tokens;['abc','bc ','c d',' de','def']tokensForLikePattern
Introduit dans : v26.3.0
Découpe une chaîne de motif LIKE en tokens à l’aide du tokenizer spécifié.
Contrairement à la fonction tokens, cette fonction tient compte de la sémantique des motifs LIKE
(comme les caractères génériques en début et en fin) et applique des règles
propres au tokenizer pour extraire des tokens pertinents pour la correspondance de motifs.
Elle prend en charge les mêmes jeux d’arguments que la fonction tokens, avec quelques
exceptions : les tokenizers chinese et icu ne sont pas pris en charge ici.
La tokenisation des motifs LIKE n’est pertinente que pour les tokenizers qui
optent explicitement pour la sémantique LIKE (supportsStringLike()). Appeler
tokensForLikePattern avec un tokenizer non pris en charge lève BAD_ARGUMENTS ;
utilisez plutôt tokens.
Les arguments supplémentaires après tokenizer sont interprétés en fonction du
tokenizer sélectionné (par exemple, n pour ngrams, separators pour
splitByString, et min_length / max_length [/ min_cutoff_length]
pour sparseGrams).
Cette fonction est principalement destinée au débogage et aux tests, et est utilisée en interne pour analyser le comportement de la tokenisation des motifs LIKE.
Syntaxe
tokensForLikePattern(value[, tokenizer[, tokenizer_specific_arguments...]])Arguments
value— La chaîne d’entrée.StringouFixedStringtokenizer— Le tokenizer à utiliser. Les arguments valides sontsplitByNonAlpha,splitByString,asciiCJK,ngrams,sparseGramsetarray. Facultatif ; s’il n’est pas défini explicitement, sa valeur par défaut estsplitByNonAlpha.const Stringlocale— Pertinent uniquement si l’argumenttokenizeresticu: le paramètre régional obligatoire, par exemple'ja'.const Stringn— Pertinent uniquement si l’argumenttokenizerestngrams: paramètre facultatif qui définit la longueur des n-grammes. S’il n’est pas défini explicitement, sa valeur par défaut est3.const UInt8separators— Pertinent uniquement si l’argumenttokenizerestsplit: paramètre facultatif qui définit les chaînes de séparation. S’il n’est pas défini explicitement, sa valeur par défaut est[' '].const Array(String)regexp— Pertinent uniquement si l’argumenttokenizerestsplitByRegexp: paramètre obligatoire qui définit l’expression régulière utilisée comme séparateur.const Stringmin_length— Pertinent uniquement si l’argumenttokenizerestsparseGrams: paramètre facultatif qui définit la longueur minimale des grammes, par défaut3.const UInt8max_length— Pertinent uniquement si l’argumenttokenizerestsparseGrams: paramètre facultatif qui définit la longueur maximale des grammes, par défaut100.const UInt8min_cutoff_length— Pertinent uniquement si l’argumenttokenizerestsparseGrams: paramètre facultatif qui définit la longueur minimale de coupure.const UInt8granularity— Pertinent uniquement si l’argumenttokenizerestchinese: paramètre facultatif, soitcoarse_grained(par défaut), soitfine_grained, qui contrôle la granularité de segmentation.const String
Valeur renvoyée
Renvoie le tableau de tokens obtenu à partir de la chaîne d’entrée. Array
Exemples
Tokenizer par défaut
SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;['test2']