Transformação Derive

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.

Gere uma nova coluna em que os valores são a saída da expressão value. A expressão pode ser calculada com base nos valores especificados no parâmetro group. A coluna de saída pode ser nomeada conforme necessário.

Uso básico

Exemplo de literal de string:

derive type: single value: 'passed' as:'status'

Resultado: é gerada uma nova coluna chamada status, em que o valor de cada linha é passed.

Exemplo de referência de coluna:

derive type: single value:productName as:'orig_productName'

Resultado: é gerada uma nova coluna chamada orig_productName contendo todos os valores em productName, que serve efetivamente como um backup da coluna de origem.

Exemplo de referência de função:

derive type: single value:SQRT(POW(a,2) + POW(b,2)) as:'c'

Resultado: é gerada uma nova coluna chamada c, que é o cálculo do teorema de Pitágoras para os valores armazenados em a e b. Para mais informações sobre esse exemplo, consulte Função POW.

Exemplo de função Window:

Use as funções Window nas suas transformações derive:

derive type: multiple col: avgRolling value: ROLLINGAVERAGE(POS_Sales, 7, 0) group: saleDate order: saleDate

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

Parâmetros

derive type: single|multiple value:(expression) [order: order_col] [group: group_col] [as:'new_column_name']

TokenObrigatório?Tipo de dadosDescrição
deriveYtransformaçãoNome da transformação
typeYstringTipo de fórmula: single (linha única) ou multiple (várias linhas)
valueSstringExpressão que gera o valor a ser armazenado na nova coluna
orderNstringColuna ou nomes de coluna pelos quais ordenar o conjunto de dados antes que a expressão value seja aplicada
groupNstringSe você está usando funções aggregate ou window, pode especificar uma expressão group para identificar o subconjunto de registros para aplicar a expressão value.
asNstringNome da coluna recém-gerada

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

type

Tipo de fórmula na transformação:

ValueDescrição
singleCálculos de fórmula contidos em uma única linha de valores.
multipleCálculos de fórmulas em várias linhas de entradas.

Observações sobre o uso:

Obrigatório?Tipo de dados
SimString (single ou multiple)

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, referência de coluna, chamada de função ou combinação)

order

Este parâmetro especifica em qual coluna classificar o conjunto de dados antes de aplicar a função especificada. Para chaves de classificação de combinação, adicione várias colunas separadas por vírgulas.

OBSERVAÇÃO: o parâmetro de ordem precisa especificar sem ambiguidade a ordem dos dados. Caso contrário, os resultados gerados podem variar entre as execuções do job.

OBSERVAÇÃO: se estiver presente, o conjunto de dados é primeiramente agrupado pelo valor group antes de ser ordenado pelos valores na coluna order.

OBSERVAÇÃO: não é preciso que a coluna order seja ordenada antes de a transformação ser executada.

Dica: para classificar na ordem inversa, adicione um traço no início do nome da coluna (-MyDate).

Observações sobre o uso:

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

group

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

A coluna ProdId contém três valores: P001, P002 e P003, e você adiciona a seguinte transformação:

derive type: single value:SUM(Sales) group:ProdId as:'SalesByProd'

A transformação acima gera a coluna SalesByProd, que contém a soma dos valores de Sales agrupados de acordo com os três identificadores de produto.

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

OBSERVAÇÃO: as transformações que usam o parâmetro group podem resultar em reordenamento não determinístico na grade de dados.

É possível 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 dados
NãoString (nome da coluna)

as

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

derive type: single value:(colX * colY) as:'areaXY'

Resultado: é gerada uma nova coluna contendo o produto dos valores das colunas colX e colY. A nova coluna é explicitamente chamada de areaXY.

Observações sobre o uso:

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

Exemplos

Exemplo - Exemplos de derivação básica

O conjunto de dados a seguir é usado para realizar algumas análises estatísticas simples usando a transformação derive.

Fonte:

StudentIdTestNumberTestScore
S001178
S001285
S001381
S002184
S002292
S002377
S003183
S003288
S003385

Transformação:

Primeiro, calcule a pontuação média total em todos os testes:

derive type: single value:AVERAGE(Score) as:'avgScore'

Na versão não formatada, os valores de saída são longos. Edite a transformação acima para aninhar a declaração de value com a formatação adequada usando a função NUMFORMAT:

derive type: single value:NUMFORMAT(AVERAGE(Score),'##.00') as:'avgScore'

Você também pode querer saber como um aluno em particular se saiu e identificar quais testes foram mais desafiadores para os alunos:

derive type: single value: NUMFORMAT(AVERAGE(Score),'##.00') group: StudentId as: 'avgScorebyStudentId'

derive type: single value:NUMFORMAT(AVERAGE(Score),'##.00') group:TestNumber as:'avgScoreByTest'

Para calcular pontuações totais para cada aluno, adicione o seguinte. Já que cada pontuação de teste individual é um número inteiro, nenhuma formatação de arredondamento é necessária.

derive type: single value:SUM(Score) group:StudentId as:'totalScoreByStudentId'

Resultados:

StudentIdTestNumberTestScoreavgScoreavgScorebyStudentIdScoreByTesttotalScoreByStudentId
S00117883,6781,3381,67244
S00128583,6781,3388,33244
S00138183,6781,3381,00244
S00218483,6784,3381,67253
S00229283,6784,3388,33253
S00237783,6784,3381,00253
S00318383,6785,3381,67256
S00328883,6785,3388,33256
S00338583,6785,3381,00256

Exemplo - Funções de arredondamento

No exemplo a seguir, demonstramos como as funções de arredondamento funcionam juntas. Essas funções incluem os seguintes itens:

  • FLOOR: o maior número inteiro que não seja maior que o valor de entrada. Consulte Função FLOOR.
  • CEILING: o menor número inteiro que não seja inferior ao valor de entrada. Consulte Função CEILING.
  • ROUND: o número inteiro mais próximo do valor de entrada. Consulte Função ROUND.
  • MOD: o número inteiro restante quando input1 for dividido por input2. Consulte Operadores numéricos.

Fonte:

rowNumX
1-2,5
2-1,2
30
41
51,5
62,5
73,9
84
94,1
1011

Transformação:

derive type: single value: FLOOR (X) as: 'floorX'

derive type: single value: CEILING (X) as: 'ceilingX'

derive type: single value: ROUND (X) as: 'roundX'

derive type: single value: (X % 2) as: 'modX'


Resultados:

rowNumXmodXroundXceilingXfloorX
1-2,5 -2-2-3
2-1,2 -1-1-2
300000
411111
51,5 221
62,5 332
73,9 443
840444
94,1 454
10111111111

Exemplo - outros exemplos

Na documentação da linguagem, há muitos outros exemplos em que a transformação derive é usada.

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.