Função ROLLINGSUM

Calcula a soma contínua de valores para a frente ou para trás da linha atual na coluna especificada.
  • Um valor de entrada ausente ou nulo não é considerado no cálculo. Por exemplo, para a primeira linha no conjunto de dados, a soma contínua dos valores anteriores é o valor na primeira linha.
  • A linha a partir da qual extrair um valor é determinada pela ordem em que as linhas são organizadas, com base no parâmetro order.

    Se você estiver trabalhando em uma amostra do conjunto de dados gerada aleatoriamente, os valores que você vê para esta função poderão não corresponder aos que são gerados no conjunto de dados completo durante a execução do job.

  • A função leva um nome de coluna e dois parâmetros inteiros opcionais que determinam a janela para trás e para frente da linha atual.
    • Os parâmetros inteiros, que têm valores padrão que são -1 e 0, calculam a média contínua a partir da linha atual até a primeira linha do conjunto de dados.
  • Essa função é compatível com as seguintes transformações:

Uso básico

Exemplo de coluna:

derive type:single value:ROLLINGSUM(myCol)

Saída: gera uma nova coluna contendo a soma contínua de todos os valores na coluna myCol, a partir da primeira linha do conjunto de dados até a atual.

Exemplo de linhas anteriores:

window value:ROLLINGSUM(myNumber, 3)

Saída: gera a nova coluna contendo a soma contínua da linha atual e dos valores das duas linhas anteriores na coluna myNumber.

Exemplo de linhas antes e depois:

window value:ROLLINGSUM(myNumber, 3, 2)

Saída: gera a nova coluna contendo a soma contínua dos valores das duas linhas anteriores, do valor da linha atual e das duas linhas após a atual na coluna myNumber.

Sintaxe

window value:ROLLINGSUM(col_ref, rowsBefore_integer, rowsAfter_integer) order: order_col [group: group_col]

ArgumentoObrigatório?Tipo de dadosDescrição
col_refSstringNome da coluna cujos valores são aplicados à função
rowsBefore_integerNnúmero inteiroNúmero de linhas antes da atual a incluir no cálculo
rowsAfter_integerNnúmero inteiroNúmero de linhas após a atual a incluir no cálculo

Para mais informações sobre os parâmetros order e group, consulte Transformação Window.

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

col_ref

Nome da coluna cujos valores são usados para calcular a soma contínua.

  • Não há compatibilidade com várias colunas e caracteres curinga.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimString (referência de coluna para valores inteiros ou decimais)myColumn

rowsBefore_integer, rowsAfter_integer

Inteiros que representam o número de linhas antes ou depois da atual para calcular a soma contínua, incluindo a linha atual. Por exemplo, se o primeiro valor for 5, a linha atual e as quatro linhas depois serão usadas no cálculo. Os valores negativos de k calculam a média contínua das linhas anteriores à atual.

  • rowBefore=1 gera apenas o valor da linha atual.
  • rowBefore=-1 usa todas as linhas anteriores à atual.
  • Se rowsAfter não for especificado, será aplicado o valor 0.
  • Se um parâmetro group for aplicado, esses valores de parâmetros não poderão ultrapassar o número máximo de linhas nos grupos.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
NãoNúmero inteiro4

Exemplos

Exemplo: funções de janela contínua

Este exemplo descreve como usar as funções de cálculo contínuo:

  • ROLLINGSUM: calcula uma soma contínua de uma janela de linhas antes e depois da linha atual. Consulte Função ROLLINGSUM.
  • ROLLINGAVERAGE: calcula uma média contínua a partir de uma janela de linhas antes e depois da linha atual. Consulte Função ROLLINGAVERAGE.
  • ROWNUMBER: calcula o número de cada linha, conforme determinado pela coluna de ordenação. Consulte Função ROWNUMBER.

O conjunto a seguir contém dados sobre vendas no último trimestre do ano.

Origem:

DateSales
02/10/16200
09/10/16500
16/10/16350
23/10/16400
30/10/16190
06/11/16550
13/11/16610
20/11/16480
27/11/16660
04/12/16690
11/12/16810
18/12/16950
25/12/161.020
01/01/17680


Transformação:

Primeiro, mantenha as informações da linha como uma coluna separada. Uma vez que os dados já foram ordenados pela coluna Date, use o seguinte comando:

window value:ROWNUMBER() order:Date

Mude o nome dessa coluna para rowId por semana do trimestre.

Agora, extraia informações de mês e semana dos valores de Date. Para derivar o valor do mês:

derive type:single value:MONTH(Date) as:'Month'

Para derivar o valor do trimestre:

derive type:single value:(1 + FLOOR(((month-1)/3))) as:'QTR'

Para derivar o valor de semana do trimestre:

window value:ROWNUMBER() order:Date group:QTR

Renomeie essa coluna como WOQ (semana do trimestre).

Para derivar o valor de semana do mês:

window value:ROWNUMBER() group:Month order:Date

Renomeie essa coluna como WOM (semana do mês).

Agora, execute os cálculos contínuos. Para calcular o total contínuo de vendas, use o comando a seguir:

window value: ROLLINGSUM(Sales, -1, 0) order: Date group:QTR

O parâmetro -1 é usado no cálculo acima para reunir a soma contínua de todas as linhas de dados, da atual para a primeira. Observe o uso da coluna QTR para agrupamento, o que move o valor de 01/01/2017 para o próprio intervalo de cálculo. Isso é opcional, conforme a preferência.

Renomeie essa coluna como QTD (acumulado no trimestre). Agora, gere uma coluna semelhante para calcular a média contínua das vendas semanais no trimestre:

window value: ROUND(ROLLINGAVERAGE(Sales, -1, 0)) order: Date group:QTR

Com a função ROLLINGAVERAGE, é possível calcular valores fracionários e, por isso, ela é envolvida na função ROUND para melhorar a organização. Renomeie essa coluna como avgWeekByQuarter.

Resultados:

Quando as colunas desnecessárias são descartadas e alguma reordenação é aplicada, o conjunto de dados fica assim:

DateWOQSalesQTDavgWeekByQuarter
02/10/161200200200
09/10/162500700350
16/10/1633501.050350
23/10/1644001.450363
30/10/1651901.640328
06/11/1665502.190365
13/11/1676102.800400
20/11/1684803.280410
27/11/1696603.940438
04/12/16106904.630463
11/12/16118105.440495
18/12/16129506.390533
25/12/16131.0207.410570
01/01/171680680680


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.