A função KeyValue extrai um valor de uma string delimitada no formato chave-valor. Esse recurso é útil para analisar linhas de log, parâmetros de consulta de URL ou atributos de eventos armazenados como texto simples.
Limitações
O Hologres V2.1 ou superior é obrigatório. Para atualizar uma instância anterior, use a opção de atualização manual no console do Hologres ou entre em contato com o suporte técnico pelo grupo do DingTalk. Consulte a seção Atualização manual (beta) em "Atualizações de instância" e Obter suporte online para o Hologres.
Instruções SQL que chamam a função
KeyValuedevem incluir a cláusulaFROM <table>.
Sintaxe
keyvalue(text <str>, [text <split1>, text <split2>,] text <key>)
A função divide str em pares chave-valor usando split1 e separa cada par em chave e valor com split2. Em seguida, retorna o valor correspondente à key especificada.
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
TEXT |
Sim |
— |
String a ser analisada. |
|
|
TEXT |
Não |
|
Delimitador que separa os pares chave-valor. Se especificado, |
|
|
TEXT |
Não |
|
Delimitador que separa a chave de seu valor dentro de cada par. Quando definido, exige que |
|
|
TEXT |
Sim |
— |
Chave cujo valor deve ser retornado. |
Valor retornado
Retorna um valor do tipo TEXT. O resultado será null nas seguintes situações:
Quando
split1ousplit2fornull.Se
stroukeyfornull.Caso nenhuma chave correspondente seja encontrada após a divisão.
Se houver múltiplas chaves correspondentes, a função retorna o valor da primeira ocorrência.
Exemplos
Delimitadores padrão (ponto e vírgula e dois pontos)
Este exemplo demonstra consultas de chave baseadas em constantes e em colunas, utilizando os delimitadores padrão (; entre pares e : entre chave e 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
O exemplo a seguir analisa uma string separada por && e com chaves definidas por =, um formato comum em parâmetros de consulta de URL e logs 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