La función KeyValue extrae un valor de una cadena de pares clave-valor delimitados. Es útil para analizar líneas de registros, parámetros de consulta de URL o atributos de eventos almacenados como texto sin formato.
Limitaciones
Se requiere Hologres V2.1 o posterior. Para actualizar una instancia anterior, utilice la opción de actualización manual en la consola de Hologres o póngase en contacto con el soporte técnico de Hologres mediante el grupo de DingTalk. Consulte la sección Manual upgrade (beta) en "Actualizaciones de instancias" y Obtain online support for Hologres.
Las sentencias SQL que invocan
KeyValuedeben incluir una cláusulaFROM <table>.
Sintaxis
keyvalue(text <str>, [text <split1>, text <split2>,] text <key>)
Esta función divide str en pares clave-valor mediante split1, separa cada par en clave y valor con split2 y devuelve el valor correspondiente a la key especificada.
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Valor predeterminado |
Descripción |
|
|
TEXT |
Sí |
— |
Cadena por analizar. |
|
|
TEXT |
No |
|
Delimitador que separa los pares clave-valor. Si se especifica, también debe indicarse |
|
|
TEXT |
No |
|
Delimitador que separa la clave de su valor dentro de cada par. Si se especifica, también debe indicarse |
|
|
TEXT |
Sí |
— |
Clave cuyo valor se desea obtener. |
Valor de retorno
Devuelve un valor de tipo TEXT. Retorna null en los siguientes casos:
split1osplit2esnull.strokeyesnull.No se encuentra ninguna clave coincidente tras la división.
Si hay varias claves coincidentes, se devuelve el valor de la primera clave encontrada.
Ejemplos
Delimitadores predeterminados (punto y coma y dos puntos)
Este ejemplo muestra búsquedas de claves tanto constantes como basadas en columnas mediante los delimitadores predeterminados (; entre pares y : entre clave y valor).
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
Delimitadores personalizados
Este ejemplo analiza una cadena separada por && y con claves definidas por =, un formato habitual en parámetros de consulta de URL y registros de eventos analíticos.
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