Transformação Extractlist

OBSERVAÇÃO: as transformações fazem parte da linguagem subjacente não diretamente acessível aos usuários. Esse conteúdo é mantido apenas para fins de referência.

Extrai um conjunto de valores com base em um padrão especificado de uma coluna de origem de qualquer tipo de dados. A coluna gerada contém uma série de ocorrências do padrão especificado.

A nova coluna contém os dados de matriz, mas o tipo de dados da nova coluna às vezes é inferido como "String".

Uso básico

A coluna de origem (myWidgetInventory) é formatada da seguinte maneira:

{ "red":"100","white":"1300","blue":"315","purple":"55"}

A transformação a seguir extrai o conteúdo do inventário bruto de cada cor:

extractlist col: myWidgetInventory on:`{digit}+`

Resultado: a coluna gerada contém dados semelhantes à seguinte matriz:

["100","1300","315","55"]

Parâmetros

extractlist: col:column_ref on:string_literal_pattern delimiter:string_literal_pattern [quote:'quoted_string'] [as:'new_column_name']

TokenObrigatório?Tipo de dadosDescrição
extractlistStransformaçãoNome da transformação.
colSstringNome da coluna de origem
onSstringLiteral ou padrão de string que identifica os valores a extrair da coluna de origem
delimiterSstringLiteral ou padrão de string que identifica o separador entre os valores a extrair
quoteNstringEspecifica um objeto entre aspas que é omitido dos delimitadores correspondentes
asNstringNome 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)

on

Identifica o padrão de correspondência. Esse padrão consiste em um literal de string, um padrão do Cloud Dataprep ou uma expressão regular.

Dica: é possível inserir o caractere Unicode equivalente ao valor desse parâmetro. Basta usar 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.

Para a transformação extractlist, todas as instâncias que correspondem a esse padrão na coluna de origem são extraídas para a lista de matrizes na nova coluna. Cada ocorrência na matriz gerada corresponde a uma instância individual na origem. A nova coluna pode conter valores duplicados.

Para criar elementos de matriz baseados apenas no parâmetro delimiter, defina a seguinte expressão regular:

on:`/+/`

Observações sobre o uso:

Obrigatório?Tipo de dados
Sim

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

delimitador

Especifica o caractere ou padrão que define o fim de um par de chave-valor. Esse valor é 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 final de chave-valor não precisa de um delimitador.

Para essa transformação, o parâmetro define o padrão que separa os valores a serem extraídos para a matriz.

Dica: é possível inserir o caractere Unicode equivalente ao valor desse parâmetro. Basta usar 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)

quote

extractlist col: MySourceValues on:`{alpha}+` delimiter:';' quote:'\"'

Resultado: cada instância de um valor de string ocorrido antes do delimitador é extraída da coluna MySourceValues. Os valores entre aspas duplas são considerados literais de string e não são processados de acordo com os delimitadores definidos na transformação.

Pode ser usado para especificar uma string como um único objeto entre aspas. Esse valor do parâmetro pode ser um ou mais caracteres.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoString
  • O valor de quote pode aparecer em qualquer lugar no valor da coluna. Não está limitado pelas restrições de quaisquer outros parâmetros.

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 sobre o uso:

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

Exemplos

Exemplo: extrair parâmetros de consulta de URLs

Origem:

Neste exemplo, uma lista de URLs identifica os itens nos carrinhos de compras dos visitantes do site. Você quer extrair as informações do carrinho de compras incorporadas nos parâmetros de consulta do URL.

UsernamecartURL
joe.robinsonhttp://example123.com/cart.asp?prodid=1001&qty=2
steph.schmidthttp://example123.com/cart.asp?prodid=1005&qty=4
jack.holmeshttp://example123.com/cart.asp?prodid=2102&qty=1
tina.joneshttp://example123.com/cart.asp?prodid=10412&qty=2

A transformação a seguir extrai a lista de valores de consulta do URL. Observe que o sinal de igual está incluído no padrão de correspondência para que você não capture acidentalmente valores numéricos da parte do URL que não compõe o parâmetro:

extractlist col:cartURL on:`={digit}+`

Os dois valores de parâmetros de consulta foram extraídos para uma matriz de valores, incluindo o sinal de igual, que precisa ser removido:

replace col:cartURL with: '' on: `=` global: true

Agora é possível desaninhar esses valores em colunas separadas:

unnest col:extractlist_cartURL keys:'[0]','[1]'

Depois de renomear as duas colunas para prodId e Qty, exclua a coluna gerada pela transformação extractlist.

Resultados:

UsernamecartURLprodIdQty
joe.robinson http://example123.com/cart.asp?prodid=1001&qty=2 10012
steph.schmidt http://example123.com/cart.asp?prodid=1005&qty=4 10054
jack.holmes http://example123.com/cart.asp?prodid=2102&qty=1 21021
tina.jones http://example123.com/cart.asp?prodid=10412&qty=2 104122

Exemplo: como extrair contagens de uma matriz irregular usando "extractlist"

Origem:

O conjunto de dados a seguir inclui contagens de e-mails de suporte processados por cada membro da equipe de suporte para clientes individuais ao longo de um período de seis meses. Neste caso, você está interessado no número total de e-mails processados para cada cliente.

Infelizmente, os dados são irregulares, já que não há entradas de um membro da equipe de suporte se ele não respondeu a um e-mail de um cliente. Desse modo, a transformação unnest não é utilizável.

custIdstartDateendDatesupportEmailCount
C00115/07/201531/12/2015["Max":"2","Ted":"0","Sally":"12","Jack":"6","Sue":"4"]
C00215/07/201531/12/2015["Sally":"4","Sue":"3"]
C00315/07/201531/12/2015["Ted":"12","Sally":"2"]
C00415/07/201531/12/2015["Jack":"7","Sue":"4","Ted":"5"]

Se os dados forem importados de um arquivo CSV, talvez seja necessário fazer algumas transformações replace simples de limpeza deles para que se pareçam com o exemplo acima.

Transformação:

Use a transformação abaixo para extrair apenas os valores numéricos da matriz supportEmailCount:

extractlist col:supportEmailCount on:`{digit}+`

Agora você tem uma coluna extractlist_supportEmailCount que contém uma matriz irregular. Use as transformações abaixo para converter esses dados em uma lista de valores separados por vírgula:

replace col: extractlist_supportEmailCount on: `[` with: '' global: true

replace col: extractlist_supportEmailCount on: `]` with: '' global: true

replace col: extractlist_supportEmailCount on: `"` with: '' global: true

Converta a coluna em tipo de dados de String.

Agora, divida a coluna em colunas separadas contendo os valores individuais da origem modificada. O parâmetro limit especifica o número de divisões a serem criadas, resultando em cinco novas colunas, que é o número máximo de entradas nas matrizes de origem.

split col:extractlist_supportEmailCount on:',' limit:4

É preciso configurar o tipo de cada coluna gerada como Número inteiro. Se você usar uma transformação derive para calcular a soma de todas as colunas geradas, ela retornará somente os valores da primeira linha. Isso ocorre porque as linhas ausentes são valores nulos.

Nas colunas que contêm valores nulos, selecione a barra de valores ausentes no histograma de dados. Selecione o cartão de sugestão "Replace" e modifique a transformação para escrever 0 no lugar do valor nulo, da seguinte forma:

set col: extractlist_supportEmailCount3 value: '0' row: ISMISSING([extractlist_supportEmailCount3])

Repita essa etapa para qualquer outra coluna que contenha valores nulos.

Agora é possível usar a instrução abaixo para somar os valores nas colunas geradas:

derive type:single value:(extractlist_supportEmailCount1 + extractlist_supportEmailCount2 + extractlist_supportEmailCount3 + extractlist_supportEmailCount4 + extractlist_supportEmailCount5)

Resultados:

Depois de renomear a coluna gerada para totalSupportEmails e descartar as colunas usadas para criá-la, o conjunto de dados será semelhante a este:

custIdstartDateendDatesupportEmailCounttotalSupportEmails
C00115/07/201531/12/2015["Max":"2","Ted":"0","Sally":"12","Jack":"6","Sue":"4"]24
C00215/07/201531/12/2015["Sally":"4","Sue":"3"]7
C00315/07/201531/12/2015["Ted":"12","Sally":"2"]14
C00415/07/201531/12/2015["Jack":"7","Sue":"4","Ted":"5"]16

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.