Todos os produtos
Search
Central de documentação

Hologres:keyvalue

Última atualização: Jun 28, 2026

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 KeyValue devem incluir a cláusula FROM <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

str

TEXT

Sim

String a ser analisada.

split1

TEXT

Não

; (ponto e vírgula)

Delimitador que separa os pares chave-valor. Se especificado, split2 também deve ser informado. Caso um par contenha múltiplas ocorrências de split2, o valor retornado será indefinido.

split2

TEXT

Não

: (dois pontos)

Delimitador que separa a chave de seu valor dentro de cada par. Quando definido, exige que split1 também seja especificado.

key

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 split1 ou split2 for null.

  • Se str ou key for null.

  • 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