Transformação Split

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.

Divide a coluna especificada em colunas de dados separadas com base nos delimitadores na transformação. Os delimitadores podem ser especificados em vários métodos com base em literal ou padrão. Os delimitadores de espaço em branco são compatíveis.

Essa transformação pode ser aplicada automaticamente como uma das primeiras etapas de sua receita. Consulte Etapas de análise inicial.

Quando a transformação split é aplicada, a coluna de origem é descartada.

  • Antes de aplicar essa transformação, você pode criar uma cópia da coluna de origem usando a transformação derive. Consulte Transformação Derive.
  • Para manter a coluna de origem, você pode usar a transformação extract e a correspondência baseada em padrões. Consulte Transformação Extract.

Uso básico

split col: MyValues on: ',' limit: 3

Resultado: a coluna de origem MyValues é dividida em quatro colunas separadas. Os valores nas colunas são determinados com base no delimitador vírgula (,). Se uma linha tiver apenas duas vírgulas, a coluna gerada será nula.

Parâmetros

split col:column_ref [quote:'quoted_string'] [ignoreCase:true|false] [limit:int_num] [after:start_point | from: start_point] [before:end_point | to:end_point] [on:'exact_match'] [at:(start_index,end_index)] [delimiters:'string1','string2', 'string3'] [positions: int1,int2,int3] [every:int_num]

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

A transformação split é compatível com os métodos gerais a seguir para especificar os delimitadores pelos quais a coluna será dividida. Dependendo do seu uso da transformação, aplicam-se conjuntos de parâmetros diferentes.

Métodos DelimitadoresDescriçãoParâmetros Operativos
delimitadores de padrão único

A coluna é dividida com base em uma das opções a seguir:

1) padrões usados para descrever o início e o fim dos delimitadores de campo

2) delimitador único, que pode ser repetido

3) valores de índice do ponto inicial e do ponto de extremidade do delimitador

quote

Pelo menos um dos parâmetros a seguir precisa ser especificado:

after, at, from, before, on, to

delimitadores de vários padrões

A coluna é dividida com base em um dos métodos de literal a seguir:

1) sequência explícita de delimitadores

2) lista explícita de posições do índice de caracteres

3) cada caractere N

Pelo menos um dos parâmetros a seguir precisa ser especificado:

delimiters, positions, every

Parâmetros compartilhados:

Os seguintes parâmetros são compartilhados entre os modos de operação:

TokenObrigatório?Tipo de dadosDescrição
splitYtransformNome da transformação
colSstringNome da coluna de origem
ignoreCaseNbooleanoSe for true, a correspondência é indiferente a maiúsculas.
limitNinteiro (positivo)Especifica o máximo de colunas para dividir da coluna de origem

Parâmetros do delimitador de padrão único:

Dica: para este método de correspondência, pelo menos um dos seguintes parâmetros precisa ser usado: at, before, from, onr to.

TokenObrigatório?Tipo de dadosDescrição
afterNstringPadrão ou literal de string que precede o padrão a corresponder
atNmatrizConjunto de dois números inteiros que identifica os índices dos caracteres inicial e final de correspondência
beforeNstringPadrão ou literal de string que aparece após o padrão de correspondência
fromNstringPadrão ou literal de string que identifica o início do padrão a corresponder
onNstringPadrão ou literal de string que identifica o padrão a corresponder
toNstringPadrão ou literal de string que identifica o final do padrão a corresponder
quoteNstringEspecifica um objeto entre aspas que é omitido da correspondência de padrões

Parâmetros do delimitador de vários padrões:

Dica: use um dos seguintes parâmetros para este método de correspondência. Não use combinações deles.

TokenObrigatório?Tipo de dadosDescrição
delimitersNmatrizMatriz de strings que lista os delimitadores de campo explícitos na ordem para aplicá-los à coluna.
positionsNmatrizMatriz de números inteiros que identifica os valores de índice de caracteres baseados em zero onde dividir a coluna.
everyNnúmero inteiroPadrão ou literal de string que aparece após o padrão a corresponder

col

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

split col: MyCol on: 'MyString'

Resultado: a coluna MyCol é dividida em duas colunas separadas, com os valores à esquerda e à direita do valor MyString em cada célula.

  • Se um valor delimitador não for detectado, o valor da célula aparecerá na primeira das novas colunas.
  • Quando o parâmetro limit não é especificado, o valor padrão 1 é aplicado.

Observações sobre o uso:

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

ignoreCase

Indica se é necessário que a correspondência diferencie maiúsculas e minúsculas ou não.

  • Defina como true para ignorar a correspondência com maiúsculas e minúsculas.
  • (Padrão) Defina como false para fazer a correspondência diferenciando maiúsculas e minúsculas.

split col: MyCol on: 'My String' ignoreCase: true

Resultado: divide a coluna MyCol em versões do valor do parâmetro on indiferentes a maiúsculas se elas aparecerem nos valores de células My String, my string, My string etc.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoBooleano

limit

O parâmetro limit define o número máximo de vezes que um padrão pode ser correspondido dentro de uma coluna.

OBSERVAÇÃO: o parâmetro limit não pode ser usado com os seguintes parâmetros: at, positions ou delimiters.

Um conjunto de colunas novas é gerado, conforme definido pelo parâmetro limit. Cada instância com correspondência preenche uma coluna separada, até que não haja mais correspondências ou todas as novas colunas geradas por limit sejam preenchidas.

split col: MyCol on: 'z' limit: 3

Resultado: divide a coluna MyCol em cada instância da letra z, gerando quatro novas colunas. Se houver menos de três instâncias de z em uma célula, as colunas correspondentes após a divisão ficarão em branco.

OBSERVAÇÃO: evite criar conjuntos de dados com mais de 2.500 colunas. O desempenho pode ser significativamente prejudicado em conjuntos de dados muito grandes.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoInteiro (positivo)

after

Um identificador de padrão que precede o valor ou o padrão a corresponder. Defina o valor do parâmetro after usando literais de string, expressões regulares ou padrões do Cloud Dataprep.

  • Se esse parâmetro for o único descritor de padrão, fique atento às seguintes observações:
    • A coluna será dividida em dois. A primeira coluna contém a parte da coluna de origem antes do valor de correspondência after. A segunda coluna fica em branco.
    • Se o valor aparece mais de uma vez, nenhuma divisão adicional é feita, já que não há outro parâmetro de padrão.

      OBSERVAÇÃO: para after, before, from e to, a correspondência ocorre no máximo uma vez. Instâncias adicionais do valor do parâmetro na célula não causam outra divisão de coluna. Para resultados mais previsíveis, você precisa especificar outro parâmetro de padrão.

  • Se o valor after não aparece na coluna, o valor da coluna original é gravado na primeira coluna dividida.
  • Esse parâmetro normalmente é usado com outro para descrever um padrão de delimitação de campo. Consulte abaixo.

split col: MyCol after: '\' before:'|'

Resultado: divide os valores em MyCol com base no valor entre os dois caracteres. A primeira coluna contém a parte do MyCol que aparece antes da barra invertida (\), e a segunda contém a parte do MyCol que aparece após a barra vertical (|). O conteúdo entre os caracteres de delimitação é descartado.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoString ou padrão

at

Identifica os pontos inicial e final do padrão de interesse.

As entradas dos parâmetros estão na forma de x,y, em que x e y são números inteiros positivos que indicam os caracteres inicial e final, respectivamente, do padrão de interesse.

  • x precisa ser menor que y.
  • Se y é maior do que o comprimento do valor, o padrão é definido como o final do valor e uma correspondência é feita.

split col: MyCol at: 2,6

Resultado: divide a coluna MyCol no valor que começa no segundo caractere da coluna e se estende até o sexto caractere. Os conteúdos antes do valor estão na primeira coluna, e os conteúdos após o valor estão na segunda.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoMatriz de dois números inteiros (X,Y)

O parâmetro at não pode ser combinado com nenhum destes: on, after, before, from, to e quote. Consulte Correspondência de posição da cláusula de padrão.

before

Um identificador de padrão que ocorre após o valor ou o padrão de correspondência. Define o padrão usando literais de string, expressões regulares ou padrões do Cloud Dataprep.

  • Se esse parâmetro for o único descritor de padrão, fique atento às seguintes observações:
    • A coluna será dividida em dois. A primeira coluna fica em branco. A segunda coluna contém a parte da coluna de origem após o valor de correspondência before.
    • Se o valor aparece mais de uma vez, nenhuma divisão adicional é feita, já que não há outro parâmetro de padrão.

      OBSERVAÇÃO: para after, before, from e to, a correspondência ocorre no máximo uma vez. Instâncias adicionais do valor do parâmetro na célula não causam outra divisão de coluna. Para resultados mais previsíveis, você precisa especificar outro parâmetro de padrão.

  • Se o valor before não aparece na coluna, o valor da coluna original é gravado na primeira coluna dividida.
  • Esse parâmetro normalmente é usado com outro para descrever um padrão de delimitação de campo. Consulte abaixo.

split col: MyCol before: '/' from:'Go:'

Resultado: divide os conteúdos de MyCol em duas colunas. A primeira coluna contém os valores que aparecem antes da string Go:, e a segunda contém os valores após a barra invertida.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoString ou padrão

from

Identifica o padrão que marca o início do valor de correspondência. Esse padrão pode ser um literal de string, um padrão do Cloud Dataprep ou uma expressão regular. O valor from está incluído na correspondência.

  • Se esse parâmetro for o único descritor de padrão, fique atento às seguintes observações:
    • A coluna será dividida em dois. A primeira coluna contém a parte da coluna de origem antes do valor de correspondência from. A segunda coluna fica em branco.
    • Se o valor aparece mais de uma vez, nenhuma divisão adicional é feita, já que não há outro parâmetro de padrão.

      OBSERVAÇÃO: para after, before, from e to, a correspondência ocorre no máximo uma vez. Instâncias adicionais do valor do parâmetro na célula não causam outra divisão de coluna. Para resultados mais previsíveis, você precisa especificar outro parâmetro de padrão.

  • Se o valor from não aparecer na coluna, o valor de saída será o original da coluna.
  • Esse parâmetro normalmente é usado com outro para descrever um padrão de delimitação de campo. Consulte abaixo.

split col: MyCol from: 'go:' to:'stop:'

Resultado: divide o conteúdo de MyCol a partir de go:, abrangendo de go: a stop:, incluindo stop:. O conteúdo antes da string aparece na primeira coluna, e o conteúdo após a string aparece na segunda.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoString ou padrão

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.

Se o valor não aparecer na coluna de origem, o valor original será gravado na primeira das colunas divididas.

split col: MyCol on: `###ERROR`

Saída: coluna em duas colunas. A primeira coluna contém valores que aparecem antes de ###ERROR, e a segunda contém os valores que aparecem após essa string.

Dica: é possível inserir o caractere Unicode equivalente ao valor deste 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
NãoString ou padrão

to

Identifica o padrão que marca o final do valor de correspondência. Esse padrão pode ser um literal de string, um padrão do Cloud Dataprep ou uma expressão regular. O valor to está incluído na correspondência.

  • Se esse parâmetro for o único descritor de padrão, fique atento às seguintes observações:
    • A coluna será dividida em dois. A primeira coluna fica em branco. A segunda coluna contém a parte da coluna de origem após o valor de correspondência to.
    • Se o valor aparece mais de uma vez, nenhuma divisão adicional é feita, já que não há outro parâmetro de padrão.

      OBSERVAÇÃO: para after, before, from e to, a correspondência ocorre no máximo uma vez. Instâncias adicionais do valor do parâmetro na célula não causam outra divisão de coluna. Para resultados mais previsíveis, você precisa especificar outro parâmetro de padrão.

  • Se o valor to não aparece na coluna, o valor da coluna original é gravado na primeira coluna dividida.
  • Esse parâmetro normalmente é usado com outro para descrever um padrão de delimitação de campo. Consulte abaixo.

split col:MyCol from:'note:' to: ` `

Resultado: divide todos os conteúdos da coluna MyCol que aparecem antes de note: na primeira coluna e todos os que aparecem após o primeiro espaço depois de note: na segunda.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoString ou padrão

quote

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

split col: MyLog on: `|` limit:10 quote: '"'

Resultado: divide a coluna MyLog na barra vertical (|), mas ignora esse caractere quando ele é encontrado entre aspas duplas na coluna. Com base no valor no parâmetro limit, a transformação é limitada a criar no máximo 10 divisões.

Observações sobre o uso:

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

delimiters

O parâmetro delimiters especifica uma lista separada por vírgulas de literais de string ou padrões para identificar os delimitadores a serem usados para dividir os dados. Os valores podem ser literais de string, expressões regulares ou padrões do Cloud Dataprep.

  • A sequência de valores define a ordem em que os delimitadores são aplicados.
  • Os valores não precisam ser os mesmos.

split col:myCol delimiters:'|',' ','|'

Resultado: divide a coluna myCol em quatro colunas separadas, conforme indicado pela sequência de delimitadores.

Observações sobre o uso:

OBSERVAÇÃO: não use os parâmetros limit ou quote com o parâmetro delimiters.

Obrigatório?Tipo de dados
Não

Matriz de strings (literal, expressão regular, padrão do Cloud Dataprep)

positions

O parâmetro positions especifica uma lista separada por vírgulas de números inteiros que identificam valores de índice de caracteres baseados em zero onde dividir a coluna. Os valores precisam ser números inteiros.

split col:myCol positions:20,55,80

Resultado: divide a coluna myCol em quatro colunas separadas, em que:

  • column1 = caracteres 0-20 da coluna de origem;
  • column2 = caracteres 21-55
  • column3 = caracteres 56-80
  • column4 = caracteres 80 até o final do valor da célula

Observações sobre o uso:

OBSERVAÇÃO: não use os parâmetros limit ou quote com o parâmetro positions.

Obrigatório?Tipo de dados
Não

Matriz de números inteiros (literal, expressão regular, padrão do Cloud Dataprep)

every

O parâmetro every pode ser usado para especificar a divisão de largura fixa da coluna de origem. Esse valor inteiro define o número de caracteres em cada coluna da saída dividida.

Se necessário, você pode usar o parâmetro every com o parâmetro limit para definir o número máximo de colunas de saída:

split col:myCol every:20 limit:5

Resultado: divide a coluna myCol a cada 20 caracteres, com um limite de cinco divisões. A sexta coluna contém todos os caracteres após o 100º caractere no valor da célula.

Observações sobre o uso:

Obrigatório?Tipo de dados
NãoNúmero inteiro

Grupos de padrões

Quando você cria ou edita uma etapa de transformação split no Transform Builder, é possível selecionar um dos seguintes grupos de padrões para aplicar à transformação. Um grupo de padrões é um conjunto de padrões relacionados que definem um método de correspondência nos dados de uma célula. Alguns grupos de padrões aplicam-se a várias transformações, e algumas se aplicam apenas à transformação split. Para mais informações, consulte Transform Builder.

Exemplos

Exemplo - Divisão com delimitadores de padrão único

Fonte:

ColAColBColC
This my String ThatabXcdXefXgh01AA001
my string This ThatijXklXmnXop02BB002
This That My StringqrXstXuvXwy03CC003

Transformação:

ColA: use a transformação a seguir para dividir nas variações de My String. Nesse caso, o parâmetro ignoreCase garante que todas as variações em maiúsculas sejam correspondidas:

split col:ColA on:'My String' ignoreCase:true

ColB: para essa coluna, a letra x é o marcador de divisão, e os dados são formatados de modo consistente com três instâncias por linha:

split col:ColB on:'X' limit:3

ColC: nesta coluna, o marcador de duas letras varia entre as linhas. No entanto, está no mesmo local em cada linha de maneira consistente:

split col:ColC at:2,4

Resultados:

Quando as transformações acima são adicionadas, as colunas de origem são descartadas, deixando as seguintes:

ColA1ColA2ColB1ColB2ColB3ColB4ColC1ColC2
ThisThatabcdefgh01001
This Thatijklmnop02002
This That qrstuvwy03003

Exemplo - Divisão com valores entre aspas

Neste exemplo, demonstramos como o parâmetro quote pode ser usado para uma divisão mais sofisticada de colunas de dados usando a transformação split.

Fonte:

Neste exemplo, os seguintes dados CSV, que contém dados de contato, são importados para o aplicativo:

LastName,FirstName,Role,Company,Address,Status
Wagner,Melody,VP of Engineering,Example.com,"123 Main Street, Oakland, CA 94601",Prospect
Gruber,Hans,"Director, IT",Example.com,"456 Broadway, Burlingame, CA, 94401",Customer
Franks,Mandy,"Sr. Manager, Analytics",Tricorp,"789 Market Street, San Francisco, CA, 94105",Customer

Transformação:

Quando esses dados são inseridos no aplicativo, algumas análises iniciais são realizadas para você:

column2column3column4column5column6column7
LastNameFirstNameRoleCompanyAddressStatus
WagnerMelodyVP of EngineeringExample.com"123 Main Street, Oakland, CA 94601"Prospect
GruberHans"Director, IT"Example.com"456 Broadway, Burlingame, CA, 94401"Cliente
FranksMandy"Sr. Manager, Analytics"Tricorp"789 Market Street, San Francisco, CA, 94105"Cliente

Ao abrir o Painel de receita, você verá as transformações abaixo:

splitrows col: column1 on: '\r' quote: '"'

split col: column1 on: ',' limit: 5 quote: '"'

A primeira transformação divide os dados da fonte bruta em linhas separadas no caractere de retorno de carro (\r), ignorando todos os valores entre os caracteres de aspas duplas. Observe que esse valor precisa de escape. As aspas duplas não exigem escape. Embora não haja retornos de carro dentro dos dados reais, o aplicativo reconhece que essas aspas duplas estão identificando valores únicos e adiciona o valor das aspas.

A segunda transformação divide cada linha de dados em colunas separadas. Como são dados separados por vírgulas, o aplicativo reconhece que esse valor é o delimitador de coluna, portanto, o valor on é definido como o caractere de vírgula (,). Neste caso, é necessário usar aspas, já que há vírgulas nos valores em column4 e column6, que são fáceis de limpar.

Para terminar a limpeza do conjunto de dados, você pode promover a primeira linha para ser o cabeçalho de coluna:

header

Você pode remover as aspas agora. Isso se aplica a duas colunas:

replace col: Role, Address with: '' on: `"` global: true

Agora, você pode dividir a coluna Address. Você pode destacar uma das vírgulas e o espaço depois dela na coluna, mas confira se a instrução final se parece com esta:

split col: Address on: ', ' limit: 2

Há um pouco de "sujeira" na coluna Address3 resultante:

Address3
CA 94601
CA, 94401
CA, 94105

Use o seguinte comando para remover a vírgula. Neste caso, é importante deixar o espaço entre os dois valores na coluna, de modo que o valor on precise ser apenas uma vírgula. Abaixo, o valor de width é representado por duas aspas simples:

replace col: Address3 with: '' on: `,` global: true

Agora você pode dividir a coluna Address3 no delimitador de espaço:

split col: Address3 on: `{delim}`

Como os dados são formatados regularmente, você pode usar o padrão do Cloud Dataprep {delim}.

Resultados:

Depois de renomear as colunas, você verá o seguinte:

LastNameFirstNameRoleCompanyAddressCityStateZipcodeStatus
WagnerMelodyVP of EngineeringExample.com123 Main StreetOaklandCA94601Prospect
GruberHansDiretor, TIExample.com456 BroadwayBurlingameCA94401Cliente
FranksMandyGerente sênior, analíticaTricorp789 Market StreetSão FranciscoCA94105Cliente

Exemplo - Divisão com diferentes tipos de delimitadores

Neste exemplo, mostramos como você pode dividir dados de uma única coluna em várias usando os seguintes tipos de delimitadores:

  • Delimitador de padrão único: um padrão é aplicado uma ou mais vezes na coluna de origem para definir os delimitadores para as colunas de saída.
  • Delimitador de vários padrões: vários padrões, sob a forma de strings explícitas, posições de índice de caracteres ou campos de largura fixa, são usados para dividir a coluna.

Para mais informações sobre esses métodos, consulte Transformação Split.

Origem:

Neste exemplo, seu conjunto de dados CSV contém mensagens de status de um conjunto de servidores. Nesse caso, os dados sobre o servidor e o carimbo de data/hora estão contidos em um único valor no CSV.

Server|Date Time,Status
admin.examplecom|2016-03-05 07:04:00,down
webapp.examplecom|2016-03-05 07:04:00,ok
admin.examplecom|2016-03-05 07:04:30,rebooting
webapp.examplecom|2016-03-05 07:04:00,ok
admin.examplecom|2016-03-05 07:05:00,ok
webapp.examplecom|2016-03-05 07:05:00,ok

Transformação:

Quando os dados são carregados pela primeira vez na página "Transformer", os dados CSV são divididos por meio do uso das duas transformações a seguir:

splitrows col: column1 on: '\r'

split col: column1 on: ',' quote: '\"'

Você pode precisar adicionar um header como a primeira etapa:

header

Neste ponto, os dados devem ter esta aparência:

Server_Date_TimeStatus
admin.example.com | 2016-03-05 07:04:00desligado
webapp.example.com | 2016-03-05 07:04:00ok
admin.example.com | 2016-03-05 07:04:30reiniciando
webapp.example.com | 2016-03-05 07:04:30ok
admin.example.com | 2016-03-05 07:05:00ok
webapp.example.com | 2016-03-05 07:05:00ok

A primeira coluna contém três conjuntos diferentes de dados: o nome do servidor, a data e a hora. Observe que os delimitadores entre esses campos são diferentes. Portanto, use um delimitador de vários padrões para separá-los:

split col:Server_Date_Time delimiters:'|',' '

Quando o delimitador acima for adicionado, você verá três colunas separadas com os campos de informação individuais. Observe que a coluna de origem foi descartada automaticamente.

OBSERVAÇÃO: um nome de coluna não pode conter o valor |. Portanto, o nome da coluna de origem não pode ser usado como base para os nomes das colunas aplicados às colunas geradas. Nesse caso, você precisa usar a transformação rename para atualizar as colunas geradas de acordo com essa informação.

Agora, você quer dividir a coluna de carimbo de data/hora em colunas separadas por ano, mês e dia. Como o delimitador de coluna desse campo é consistentemente um traço (-), você pode usar um delimitador de padrão único com a transformação split:

split col:date on:`-` limit:2

Resultados:

Depois de renomear as colunas geradas, seu conjunto de dados ficará como mostrado abaixo. Observe que a coluna de carimbo de data/hora de origem foi automaticamente descartada.

serveryearmêsdaytimeStatus
admin.example.com2016030507:04:00desligado
webapp.example.com2016030507:04:00ok
admin.example.com2016030507:04:30reiniciando
webapp.example.com2016030507:04:30ok
admin.example.com2016030507:05:00ok
webapp.example.com2016030507:05:00ok

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.