Transformação Settype

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.

Define o tipo de dados da coluna ou colunas especificadas. Os dados da coluna são validados em relação ao novo tipo de dados, que pode alterar os resultados do perfil das colunas.

O tipo é especificado como um literal de string ou um conjunto de literais separados por vírgulas. Para mais informações sobre literais de string válidos, consulte Strings de tipo de dados válidas.

Dicas:

Dica: use a transformação settype para modificar o tipo de dados inferido para uma coluna. Caso uma nova etapa de transformação seja adicionada, o tipo de dados da coluna será inferido novamente, o que pode modificar a digitação específica. Pense na aplicação de transformações setttype o mais tarde possível nas receitas.

  • Quando uma coluna é definida com um tipo de dados, todos os valores nela são validados em relação ao novo tipo, o que pode alterar o número de valores sem correspondência. Pode ser necessário fazer alguma limpeza. Algumas operações podem fazer o tipo de dados ser revalidado automaticamente.
  • Pode ser mais fácil definir o tipo usando o menu suspenso da coluna. As opções de tipo de dados no menu suspenso da coluna são transformadas em etapas de receita usando a transformação settype.
  • Se você encontrar um número significativo de incorrespondências depois de alterar o tipo de dados, talvez seja útil alterar ou reverter o tipo para string. Todos os dados podem ser interpretados como uma string ou uma lista de valores de string. As transformações e funções para manipular dados de string podem ser mais fáceis de usar para limpar dados sem correspondência, antes que o tipo de dados seja alterado para o preferencial.
  • Valores de linha, que não correspondam ao novo tipo de dados, podem ser transformados em valores nulos durante a execução do job.

Uso básico

Exemplo de coluna única:

settype col: Score type: 'Integer'

Resultado: altera o tipo de dados da coluna Score para número inteiro.

Exemplo de várias colunas:

settype col: Score,studentId type: 'Integer'

Resultado: altera o tipo de dados das colunas Score e studentId para número inteiro.

Parâmetros

settype col:col1,col2 type:'string_literal'

TokenObrigatório?Tipo de dadosDescrição
settypeStransformaçãoNome da transformação.
colSstringLista de colunas separadas por vírgulas às quais é aplicado o tipo especificado.
typeYstringLiteral de string identificando o tipo de dados a aplicar às colunas. Consulte Strings de tipo de dados válidas.

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

col

Identifica as colunas às quais aplicar a transformação. Você pode especificar uma ou mais colunas.

Observações sobre o uso:

Obrigatório?Tipo de dados
SimStrings separadas por vírgulas (nome ou nomes de coluna)

type

Define o tipo de dados a ser aplicado à transformação. O tipo é definido como um literal de string. Para uma lista de strings válidas, consulte Strings de tipo de dados válidas.

settype col: zips type:'Zipcode'

Resultado: altera o tipo de dados da coluna zips para CEP. Todos os valores são validados como CEP dos EUA.

Observações sobre o uso:

Obrigatório?Tipo de dados
SimValor de string

Exemplos

Exemplo: settype simples com valores de data

Origem:

Abaixo, veja uma lista de atividades listadas por data. Observe a variação nos valores da data, incluindo o que é claramente uma data inválida. Estes são os dados de origem:

myDate, myAction
4/4/2016,Woke up at 6:30
4-4-2016,Got ready
9-9-9999,Drove kids to school
4-4-2016, Commuted to work

Transformação:

Quando esses dados são importados para a página do Transformer, ocorrem alguns problemas imediatos: nenhum cabeçalho de coluna e linhas em branco na parte inferior. Estas duas transformações corrigem isso:

header

delete row: ISMISSING([myDate])

Para a data inválida, você pode inferir das linhas ao redor, que devem ser da mesma data. Você pode fazer a seguinte alteração para corrigir o problema:

replace col: myDate on: `9-9-9999` with: '4-4-2016' global: true

Agora que as datas parecem bastante consistentes, você pode definir o tipo de dados da coluna para um formato Datetime correspondente:

settype col: myDate type: 'Datetime','mm-dd-yy','mm*dd*yyyy'

Observe a sintaxe acima para especificar os tipos de Datatime. Além da palavra-chave Datetime, é preciso especificar o tipo de formato, seguido da variação desse formato.

Dica: um conjunto de formatos e variações aceitos para Datetime estão disponíveis pelo seletor de tipo de dados da coluna. Quando você seleciona o formato de Datetime pretendido, a transformação setttype é adicionada à receita.

Resultados:

myDatemyAction
4/4/2016Acordei às 6:30
4-4-2016Me arrumei
4-4-2016Levei as crianças para a escola
4-4-2016Me transportei para o trabalho

Exemplo: usar merge e settype para limpar dados numéricos que devem ser tratados como outros tipos de dados

Este exemplo ilustra como limpar dados que foram interpretados como de natureza numérica, quando na verdade é string ou um tipo de string estruturada, como Gênero. Este exemplo usa:

Origem:

O exemplo a seguir contém informações de código de cliente e CEP em duas colunas. Quando carregados na página do Transformer, esses dados são inicialmente interpretados como numéricos, já que contêm todos os números.

Os valores de quatro dígitos de ZipCode devem ter cinco dígitos, com 0 na frente.

CustIdZipCode
40201231234
201212194105
321201294101
13012122020

Transformação:

Coluna CustId: é preciso digitar novamente essa coluna como valores de string. Defina o tipo de dados da coluna como String no menu suspenso da coluna, que é processado como a seguinte transformação:

settype col:CustId type:'String'

A coluna agora é do tipo String, mas transformações futuras podem fazer com que ela venha a ser novamente interpretada como valores inteiros. Para se prevenir quanto a isso, convém adicionar um marcador na frente da string. Remova esse marcador antes da execução.

O método básico é criar uma coluna nova contendo o marcador do código do cliente (C) e, em seguida, mesclá-la com a coluna CustId existente. É útil adicionar um indicador desse tipo à frente, caso o identificador do cliente seja um valor numérico que possa ser confundido com outros valores numéricos. Além disso, essa etapa de mesclagem força o valor a ser interpretado como um valor de string, o que é mais apropriado para um identificador.

merge col:'C', CustId

Agora, é possível descartar as colunas CustId e renomear a nova coluna como CustId.

Coluna ZipCode: é preciso converter esta coluna em valores válidos de CEP. Para facilitar a utilização, esta coluna precisa ser do tipo "String":

settype col:ZipCode type:'Zipcode'

Com a transformação abaixo, o valor na coluna ZipCode é alterado se o respectivo comprimento for quatro em qualquer linha. O novo valor é o valor original precedido do número 0:

set col: ZipCode value: if(len($col) == 4, merge(['0',$col]), $col)

Esta coluna agora pode ser digitada novamente como tipo "Código postal".

Resultados:

CustIdZipCode
C402012301234
C201212194105
C321201294101
C130121202020

Lembre-se de remover o marcador C da coluna CustId. Selecione o valor C na coluna CustId e escolha a transformação replace. Talvez seja necessário digitar novamente os dados limpos como dados de string.

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.