La fonction KeyValue extrait une valeur d’une chaîne de paires clé-valeur délimitées. Elle permet d’analyser des lignes de journal, des paramètres de requête URL ou des attributs d’événement stockés sous forme de texte brut.
Limites
Hologres V2.1 ou une version ultérieure est requis. Pour mettre à niveau une instance antérieure, utilisez l’option de mise à niveau manuelle dans la console Hologres ou contactez le support technique Hologres via le groupe DingTalk. Consultez la section Mise à niveau manuelle (bêta) dans « Mises à niveau d’instance » et Obtenir une assistance en ligne pour Hologres.
Les instructions SQL qui appellent
KeyValuedoivent inclure une clauseFROM <table>.
Syntaxe
keyvalue(text <str>, [text <split1>, text <split2>,] text <key>)
La fonction divise str en paires clé-valeur à l’aide de split1, puis sépare chaque paire en clé et valeur à l’aide de split2. Elle renvoie la valeur correspondant à la key spécifiée.
Paramètres
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
str |
TEXT | Oui | — | Chaîne à analyser. |
split1 |
TEXT | Non | ; (point-virgule) |
Délimiteur séparant les paires clé-valeur. S’il est spécifié, split2 doit également l’être. Si une paire contient plusieurs occurrences de split2, la valeur de retour est indéfinie. |
split2 |
TEXT | Non | : (deux-points) |
Délimiteur séparant la clé de sa valeur au sein de chaque paire. S’il est spécifié, split1 doit également l’être. |
key |
TEXT | Oui | — | Clé dont la valeur doit être renvoyée. |
Valeur de retour
Renvoie une valeur de type TEXT. Renvoie null dans les cas suivants :
split1ousplit2estnull.stroukeyestnull.Aucune clé correspondante n’est trouvée après la division.
Si plusieurs clés correspondent, la fonction renvoie la valeur de la première clé trouvée.
Exemples
Délimiteurs par défaut (point-virgule et deux-points)
Cet exemple illustre des recherches de clés basées sur des constantes et sur des colonnes, en utilisant les délimiteurs par défaut (; entre les paires, : entre la clé et la valeur).
BEGIN;
CREATE TABLE kvtest (
a TEXT,
b TEXT
);
COMMIT;
INSERT INTO kvtest VALUES ('0:1', 'a'), ('2:3', 'b'), ('1:2', '1'), ('1:4', '1');
-- Look up by a constant key
SELECT keyvalue(a, '1') FROM kvtest;
-- Result:
-- keyvalue
-- ----------
-- \N
-- \N
-- 2
-- 4
-- Look up by a column as the key
SELECT keyvalue(a, b) FROM kvtest;
-- Result:
-- keyvalue
-- ----------
-- \N
-- \N
-- 2
-- 4
Délimiteurs personnalisés
Cet exemple analyse une chaîne dont les paires sont séparées par && et la clé de la valeur par =. Il s’agit d’un format courant dans les paramètres de requête URL et les journaux d’événements analytiques.
BEGIN;
CREATE TABLE kvtest (
a TEXT,
b TEXT
);
COMMIT;
INSERT INTO kvtest VALUES ('sp=11&&xd=1&&B2C=12&&tf=219', 'key');
-- split1='&&' separates pairs; split2='=' separates key from value
SELECT keyvalue(a, '&&', '=', 'sp') FROM kvtest;
-- Result:
-- keyvalue
-- ----------
-- 11