Transformação Extractkv

Extrai pares chave-valor de uma coluna de origem e os escreve em uma nova coluna.A coluna de origem precisa ser do tipo "String", mesmo que os dados possam ser formatados como outros tipos. A coluna gerada é de tipo "Objeto".

Sua coluna de origem (MyKeyValues) é formatada da seguinte maneira:

key1=value1,key2=value2

Uso básico

A seguinte transformação extrai os pares chave-valor O parâmetro key contém um único padrão que corresponde a todas as chaves que você quer extrair:

extractkv col: MyKeyValues key:`{alpha}+{digit}` valueafter: '=' delimiter: ','

Saída: a coluna gerada contém dados que se parecem com o seguinte:

{"key1":"value1","key2":"value2"}

Se os dados de origem continham chaves adicionais que não foram especificadas na transformação, esses pares chave-valor não aparecerão na coluna gerada.

Parâmetros

extractkv col:column_ref delimiter:string_literal_pattern key:string_literal_pattern valueafter:string_literal_pattern [as:'new_column_name']

ParâmetroObrigatório?Transform BuilderTipo de dadosDescrição
colSColunastringNome da coluna de origem
delimiterSDelimitador de pares de chave/valorstringString literal ou padrão que identifica o separador entre pares chave-valor
keySPadrão-chavestringPadrão que identifica a chave para corresponder
valueafterSSeparador de chave-valorstringString literal ou padrão após a qual está localizado o valor de uma chave
asNNovo nome da colunastringNome da coluna recém-gerada

Para mais informações sobre os padrões de sintaxe, consulte Notas de sintaxe da documentação da linguagem.

col

Identifica a coluna na qual aplicar a transformação. Você pode especificar apenas uma coluna.

Observações sobre o uso:

Obrigatório?Tipo de dados
SimString (nome da coluna)

delimiter

Especifica o caractere ou padrão que define o fim de um par de chave-valor. Esse valor pode ser especificado como literal de string, expressão regular ou padrão do Cloud Dataprep.

No código a seguir:

{ key1=value1,key2=value2 }

O delimitador é a vírgula (','). O par de chave-valor final não precisa de um delimitador.

Dica: você pode inserir o caractere Unicode equivalente ao valor desse parâmetro usando uma expressão regular no formato /\uHHHH/. Por exemplo, /\u0013/ representa o caractere Unicode 0013 (retorno de carro). Para mais informações, consulte Caracteres especiais compatíveis de expressões regulares.

Observações sobre o uso:

Obrigatório?Tipo de dados
Sim

String (literal, expressão regular ou padrão do Cloud Dataprep)

key

Especifica o padrão usado para extrair as chaves de uma coluna de origem pela transformação extractkv. Para os seguintes dados:

{ key1=value1,key2=value2 }

As chaves são representadas na transformação pelo parâmetro e pelo valor a seguir:

key:`{alpha}+{digit}`

Este padrão corresponde a todas as chaves que começam com uma letra e terminam com um dígito. Se os dados de origem contiverem outras chaves, elas não aparecerão nos dados extraídos.

Observações de uso:

Obrigatório?Tipo de dados
SimPadrão único que representa as chaves individuais a extrair.

valueafter

Especifica o caractere ou padrão. O valor é, então, especificado em um par de chave-valor. Esse valor pode ser especificado como literal de string, expressão regular ou padrão do Cloud Dataprep.

Para o exemplo a seguir:

{ key1=value1,key2=value2 }

A string valueafter é o sinal de igual ('=').

Observações de uso:

Obrigatório?Tipo de dados
Sim

String (literal, expressão regular ou padrão do Cloud Dataprep)

as

Nome da nova coluna que está sendo gerada. Se o parâmetro as não for especificado, um nome padrão será usado.

Observações de uso:

Obrigatório?Tipo de dado
NãoString (nome da coluna)

Exemplos

Exemplo: como extrair valores de chave dos dados de carro e depois desaninhá-los em colunas separadas

Neste exemplo, mostramos como você pode descompactar dados aninhados em um Objeto em colunas separadas usando as seguintes transformações:

Fonte:

Você tem a seguinte informação sobre carros usados. A coluna VIN contém identificadores de veículo, e a coluna Properties contém pares chave-valor que descrevem as características de cada veículo. Você quer desempacotar esses dados em colunas separadas.

VINProperties
XX3 JT4522year=2004,make=Subaru,model=Impreza,color=green,mileage=125422,cost=3199
HT4 UJ9122year=2006,make=VW,model=Passat,color=silver,mileage=102941,cost=4599
KC2 WZ9231year=2009,make=GMC,model=Yukon,color=black,mileage=68213,cost=12899
LL8 UH4921year=2011,make=BMW,model=328i,color=brown,mileage=57212,cost=16999

Transformação:

Adicione a seguinte transformação, que identifica todos os valores-chave na coluna como se começassem com caracteres alfabéticos.

  • A string valueafter identifica onde o valor correspondente começa após a chave.
  • A string delimiter indica o fim de cada par de chave-valor.

extractkv col:Properties key:`{alpha}+` valueafter:`=` delimiter:`,`

Agora que o objeto de valores foi criado, você pode usar a transformação unnest para descompactar esses dados mapeados. Na instrução a seguir, cada chave é especificada, o que resulta em colunas separadas encabeçadas pela chave nomeada:

unnest col:extractkv_Properties keys:'year','make','model','color','mileage','cost'

Resultados:

Quando você descartar as colunas Properties desnecessárias, o conjunto de dados ficará da seguinte maneira:

VINyearmakemodelcolormileagecost
XX3 JT45222004SubaruImprezagreen1254223199
HT4 UJ91222006VWPassatsilver1029414599
KC2 WZ92312009GMCYukonblack6821312899
LL8 UH49212011BMW328ibrown5721216999

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Google Cloud Dataprep
Precisa de ajuda? Acesse nossa página de suporte.