Transformação Set

Substitui valores em uma ou mais colunas especificadas pelo valor definido, que pode ser um literal ou uma expressão. As expressões podem usar funções condicionais para filtrar o conjunto de linhas.

A transformação set é usada para substituir todos os valores de célula. Para substituição de valores de célula parciais que usam literais ou padrões, use a transformação replace. Consulte Transformação Replace.

Uso básico

Exemplo de literal:

set col: Country value: 'USA'

Resultado: são definidos os valores de todas as linhas na coluna Country como USA

Exemplo de literal de várias colunas:

set col: SSN,Phone value: '##REDACTED###'

Resultado: são definidos os valores de todas as linhas nas colunas SSN e Phone como ##REDACTED##.

Exemplo de expressão:

set col: isAmerica value: IF(Country == 'USA', true', 'false')

Resultado: se o valor na coluna Country for USA, o valor em isAmerica será definido como true.

Exemplo de marcador:

É possível substituir um valor de marcador pelo nome da coluna. Isso será útil se você estiver aplicando a mesma função em várias colunas. Por exemplo:

set col:score1,score2 value:IF ($col == 0, AVERAGE($col), $col)

Resultado: na transformação acima, os valores em score1 e score2 são definidos para a média do valor da coluna quando o valor na coluna é 0. A computação da média é aplicada em todas as linhas da coluna, e não apenas nas linhas filtradas.

Exemplo de função Window:

É possível usar as funções Window nas transformações set:

set col: avgSales value: ROLLINGAVERAGE(POS_Sales, 7, 0) group: saleDate order: saleDate

Resultado: é calculado o valor da coluna de avgSales para que seja a média contínua dos valores de POS_Sales para os sete dias precedentes, agrupados e ordenados pela coluna saleDate. Para mais informações, consulte Funções Window.

Parâmetros

set col:col1,[col2] value:(expression) [group: group_col]

ParâmetroObrigatório?Tranform BuilderTipo de dadosDescrição
col1SColunastringNome da coluna
col2NColunastringNome da coluna
valueSFórmulastringExpressão que gera o valor a ser armazenado na coluna
groupNAgrupar porstringSe estiver usando funções de agregação ou janela, você poderá especificar uma expressão group para identificar o subconjunto de registros para aplicar a expressão value.

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

col1, col2

Identifica uma coluna e as colunas adicionais opcionais às quais aplicar a transformação.

set col: MyCol value: 'myNewString'

Resultado: é definido o valor da coluna MyCol como myNewString.

Notas de uso:

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

value

Identifica a expressão que é aplicada pela transformação. O parâmetro value pode ser um dos tipos a seguir:

  • Predicados de teste que avaliam valores booleanos (value: myAge == '30' produz um valor true ou false).
  • Expressões computacionais (value: abs(pow(myCol,3))).

O tipo de expressão value esperado é determinado pelo tipo de transformação. Cada tipo de expressão pode conter combinações dos itens abaixo:

  • valores literais: value: 'Hello, world'
  • referências de coluna: value: amountOwed * 10
  • funções: value: left(myString, 4)

  • combinações: value: abs(pow(myCol,3))

Os tipos de valores gerados são inferidos novamente pela plataforma.

Observações sobre o uso:

Obrigatório?Tipo de dados
SimString (literal, nome de coluna ou expressão)

group

Identifica a coluna pela qual o conjunto de dados é agrupado para a finalidade de aplicação da transformação.

Se o parâmetro de valor contiver funções de agregação ou janela, você poderá aplicar o parâmetro group para especificar subconjuntos de registros em que o cálculo do valor é aplicado.

Você pode especificar uma ou mais colunas para agrupar usando referências de coluna separadas por vírgula.

Observações sobre o uso:

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

Exemplos

Exemplo: limpar dados de contato de marketing com replace, set e extract

Neste exemplo, ilustramos os diferentes usos das seguintes transformações para substituir ou extrair dados de células:

  • set: determina os valores a serem usados em uma coluna predefinida. Consulte Transformação Set.

    Dica: use a transformação derive para gerar uma nova coluna que contenha um conjunto definido de valores. Consulte Transformação Derive.

  • replace: substitui um padrão ou um literal de string que aparece nos valores de uma coluna por uma string específica. Consulte Transformação Replace.
  • extract: extrai um valor com base em padrões de uma coluna e o armazena em uma coluna nova. Consulte Transformação Extract.

Fonte:

O conjunto de dados a seguir contém informações de contato que foram coletadas por sua plataforma de marketing a partir das ações realizadas pelos visitantes em seu site. É necessário limpar esses dados e prepará-los para uso em uma plataforma de análise.

LeadIdLastNameFirstNameTitlePhoneRequest
LE160301001JonesCharlesDiretor técnico executivo (CTO)415-555-1212reg
LE160301002LyonsEdward 415-012-3456download de artigo
LE160301003MartinMaryCEO510-555-5555excluir conta
LE160301004SmithTaliaEngenheiro510-123-4567avaliação gratuita

Transformação:

Coluna Title: por exemplo, primeiro você constata que faltam alguns dados. A plataforma de análise reconhece o valor "#MISSING#" da string como indicador de um valor ausente. Então, clique na barra de valores ausentes na coluna Title. Em seguida, selecione o cartão de sugestão Replace. Observe que a substituição padrão é um valor nulo, por isso, clique em Modificar para atualizá-lo:

set col: Title value: IF(ISMISSING([Title]),'#MISSING#',Title)

Coluna de solicitação: na coluna "Solicitação", observe que a entrada reg precisa ser limpa. Adicione a seguinte transformação, que substitui esse valor:

replace col:Request with:'Registration' on:`{start}reg{end}`

A transformação acima usa um padrão do Cloud Dataprep como a expressão do parâmetro on:. Essa expressão indica correspondência do início do valor da célula, a literal de string reg, e do final do valor da célula, que corresponde somente com valores de células completos de reg.

Essa transformação funciona muito bem na amostra, mas o que acontece se o valor for Reg, com um R maiúsculo? Esse valor pode não ser substituído. Para melhorar a transformação, modifique-a usando o seguinte padrão do Cloud Dataprep no parâmetro on que captura as diferenças no uso de maiúsculas:

replace col:Request with:'Registration' on:`{start}{[R|r]}eg{end}`

Adicione a transformação acima à receita. Perceba que todos os valores na coluna Request precisam ter a inicial de todas as palavras em letra maiúscula, exceto as de palavras curtas como e ou de, ou a inicial de todas as palavras em letra maiúscula, sem exceção:

set col:Request value:PROPER(Request)

Agora, todos os valores estão com letras maiúsculas, como títulos.

Coluna Telefone: talvez você tenha observado alguns problemas com os valores na coluna Phone. Nos Estados Unidos, o prefixo 555 é usado apenas para coletar informações. Os números de telefone com esse prefixo são inválidos.

Na grade de dados, você seleciona a primeira instância de 555 na coluna. No entanto, ele seleciona todas as instâncias desse padrão, incluindo aquelas que você não quer modificar. Nesse caso, selecione a instância semelhante de 555 na outra linha. Nos cartões de sugestão, clique na transformação Replace.

Observe, no entanto, que a transformação Replace padrão também destacou o segundo padrão de 555 em uma instância, o que pode ser um problema em outros números de telefone não exibidos na amostra. É preciso modificar o padrão de seleção para essa transformação. No parâmetro on: abaixo, o padrão do Cloud Dataprep foi modificado para corresponder apenas às instâncias de 555 que aparecem no segundo segmento, no formato de número de telefone:

replace col: Phone on: `{start}%{3}-555-%*{end}` with: '#INVALID#' global: true

Observe que a construção com o caractere curinga foi adicionada (%*). É possível adicionar um padrão que corresponda exatamente aos últimos quatro caracteres (%{4}), mas esse padrão de combinação não capturaria a possibilidade de um número de telefone que tivesse um ramal no final. A expressão acima faz isso.

OBSERVAÇÃO: a transformação acima cria valores que são incompatíveis com o tipo de dados de número de telefone. Nesse exemplo, no entanto, essas ausências de correspondência são entendidas como benéficas para o sistema que usa o resultado do Cloud Dataprep.

Coluna LeadId: talvez você tenha percebido que a coluna do identificador principal (LeadId) contém algumas informações incorporadas: um valor de data e um identificador para a instância no dia. Estas etapas podem ser seguidas para detalhar essas informações. A primeira cria uma coluna de trabalho separada com essas informações, o que nos permite preservar a coluna original, não modificada:

derive value:LeadId as:'LeadIdworking'

Agora é possível trabalhar fora dessa coluna para criar novas colunas. Use a seguinte transformação Replace para remover os dois caracteres principais, que não são necessários para as novas colunas:

replace col:LeadIdworking with:'' on:'LE'

Observe que as informações da data agora estão perfeitamente contidas nos primeiros caracteres da coluna de trabalho. Para extrair esses valores para uma nova coluna, use o seguinte código:

extract col: LeadIdworking on: `{start}%{6}`

A nova coluna LeadIdworking2 agora contém apenas as informações da data. A limpeza dessa coluna requer a reformatação dos dados, reclassificando-os como um tipo Datetime e, em seguida, aplicando a função dateformat para formatá-los de maneira satisfatória. Essas etapas são deixadas como um exercício separado.

Por enquanto, vamos renomear a coluna:

rename col:LeadIdworking1 to:'LeadIdDate'

Na primeira coluna de trabalho, agora é possível remover as informações da data usando o seguinte código:

replace col: LeadIdworking on: `{start}%{6}` with: ''

É possível renomear esta coluna para indicar que é um identificador diário:

rename col:LeadIdworking to:'LeadIdDaily'

Resultados:

LeadIdLeadIdDailyLeadIdDateLastNameFirstNameTitlePhoneRequest
LE160301001001160301JonesCharlesDiretor técnico executivo (CTO)#INVALID#Registro
LE160301002002160301LyonsEdward#AUSENTE#415-012-3456Download de artigo
LE160301003003160301MartinMaryCEO#INVALID#Excluir conta
LE160301004004160301SmithTaliaEngenheiro510-123-4567Avaliação gratuita

Exemplo: como usar o marcador $col

Este exemplo ilustra como você pode usar as seguintes funções de cálculo condicional para analisar dados meteorológicos:

  • AVERAGEIF: média de um conjunto de valores por grupo que atende a uma condição especificada. Consulte a Função AVERAGEIF.
  • MINIF: mínimo de um conjunto de valores por grupo que atende a uma condição especificada. Consulte a Função MINIF.
  • MAXIF: máximo de um conjunto de valores por grupo que atende a uma condição especificada. Consulte a Função MAXIF.
  • VARIF: variância de um conjunto de valores por grupo que atende a uma condição especificada. Consulte a Função VARIF.
  • STDEVIF: desvio padrão de um conjunto de valores por grupo que atende a uma condição especificada. Consulte a Função STDEVIF.

Origem:

Aqui estão alguns exemplos de dados meteorológicos:

datacidadechuva_cmtemp_Cvento_mph
23/01/17Vila Vale0,0012,86,7
23/01/17Centro da cidade0,319,45,3
23/01/17Montanha Mágica0,000,07,3
24/01/17Vila Vale0,2517,23,3
24/01/17Centro da cidade0,541,17,6
24/01/17Montanha Mágica0,325,08,8
25/01/17Vila Vale0,023,36,8
25/01/17Centro da cidade0,833,35,1
1/25/17Magic Mountain0,59-1,76,4
1/26/17Valleyville1,0815,04,2
1/26/17Center Town0,966,17,6
1/26/17Magic Mountain0,77-3,93,0
1/27/17Valleyville1,007,22,8
1/27/17Center Town1,3220,00,2
1/27/17Magic Mountain0,775,65,2
1/28/17Valleyville0,12-6,15,1
1/28/17Center Town0,145,04,9
1/28/17Magic Mountain1,501,10,4
1/29/17Valleyville0,3613,37,3
1/29/17Center Town0,756,19,0
1/29/17Magic Mountain0,603,36,0


Transformação:

Com esta etapa é calculada a temperatura média por cidade, para os dias chuvosos:

derive value:AVERAGEIF(temp_C, rain_cm > 0) group:city as:'avgTempWRain'

Com esta etapa é calculada a velocidade máxima do vento por cidade, para dias de temperatura abaixo de zero:

derive value:MAXIF(wind_mph,temp_C < 0) group:city as:'maxWindSubZero'

Com esta etapa é calculada a temperatura mínima por cidade, quando a velocidade do vento é inferior a 8 km por hora:

derive value:MINIF(temp_C,wind_mph<5) group:city as:'minTempWind5'

Com esta etapa é calculada a variação da temperatura por cidade, para dias chuvosos:

derive value:VARIF(temp_C,rain_cm >0) group:city as:'varTempWRain'

Com esta etapa é calculado o desvio padrão na precipitação para o Centro da Cidade:

derive value:STDEVIF(rain_cm,city=='Center Town') as:'stDevRainCenterTown'

Use as seguintes transformações para formatar o resultado gerado. Observe o valor do marcador de posição $col para as transformações de várias colunas:

set col:stDevRainCenterTown,maxWindSubZero value:numformat($col,'##.##')

Uma vez que as transformações seguintes dependem de dados que tenham apenas um dígito significativo, formate-os de maneira diferente:

set col:varTempWRain,avgTempWRain,minTempWind5 value:numformat($col,'##.#')


Resultados:

Veja a seguir alguns exemplos de dados meteorológicos:

datacidadechuva_cmtemp_Cwind_mphavgTempWRainmaxWindSubZerominTempWind5varTempWRainstDevRainCenterTown
23/01/17Vila Vale0,0012,86,78,35,17,263,80,37
23/01/17Centro da cidade0,319,45,37,3 532,60,37
23/01/17Montanha Mágica0,000,07,31,66,43-3,9120,37
24/01/17Vila Vale0,2517,23,38,35,17,263,80,37
24/01/17Centro da cidade0,541,17,67,3 532,60,37
24/01/17Montanha Mágica0,325,08,81,66,43-3,9120,37
25/01/17Vila Vale0,023,36,88,35,17,263,80,37
25/01/17Centro da cidade0,833,35,17,3 532,60,37
25/01/17Magic Mountain0,59-1,76,41,66,43-3,9120,37
26/01/17Valleyville1,0815,04,28,35,17,263,80,37
26/01/17Center Town0,966,17,67,3 532,60,37
26/01/17Magic Mountain0,77-3,93,01,66,43-3,9120,37
27/01/17Valleyville1,007,22,88,35,17,263,80,37
27/01/17Center Town1,3220,00,27,3 532,60,37
27/01/17Magic Mountain0,775,65,21,66,43-3,9120,37
28/01/17Valleyville0,12-6,15,18,35,17,263,80,37
28/01/17Center Town0,145,04,97,3 532,60,37
28/01/17Magic Mountain1,501,10,41,66,43-3,9120,37
29/01/17Valleyville0,3613,37,38,35,17,263,80,37
29/01/17Center Town0,756,19,07,3 532,60,37
29/01/17Magic Mountain0,603,36,01,66,43-3,9120,37

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.