EXEMPLO: função PREV

O conjunto de dados a seguir contém pedidos de vários clientes durante um período de alguns dias, listados sem uma ordem específica. Seu objetivo é avaliar como o tamanho do pedido mudou para cada cliente com o tempo e oferecer ofertas aos clientes com base nas mudanças no volume de pedidos.

Origem:

DataCustIdOrderIdOrderValue
04/01/16C001Ord002500
11/01/16C003Ord005200
20/01/16C002Ord007300
21/01/16C003Ord008400
04/01/16C001Ord001100
07/01/16C002Ord003600
08/01/16C003Ord004700
21/01/16C002Ord009200
15/01/16C001Ord006900

Transformação:

Quando os dados são carregados na página do "Transformer", você pode usar a função PREV para reunir os valores dos dois pedidos anteriores em uma nova coluna. O truque é ordenar a transformação window pela data e agrupá-la por cliente:

window value: PREV(OrderValue, 1) order: Date group: CustId

window value: PREV(OrderValue, 2) order: Date group: CustId

rename col: window to: 'OrderValue_1'

rename col: window1 to: 'OrderValue_2'

Agora o conjunto de dados terá as seguintes colunas: Date, CustId, OrderId, OrderValue, OrderValue_1, OrderValue_2.

As duas novas colunas representam o pedido anterior e o anterior a este, respectivamente. Agora, cada linha contém o pedido atual (OrderValue), bem como os pedidos anteriores. O objetivo então é executar as seguintes ações em relação aos clientes:

  • Se o pedido atual for mais que 20% maior do que a soma dos dois pedidos anteriores, envie um desconto.
  • Se o pedido atual for inferior a 90% da soma dos dois pedidos anteriores, envie um cupom.
  • Caso contrário, envie um cartão de Natal.

Na primeira situação, você pode adicionar a instrução a seguir, que usa a função IF para testar o valor do pedido atual em relação aos anteriores:

derive type:single value: IF(OrderValue >= (1.2 * (OrderValue_1 + OrderValue_2)), 'send rebate', 'no action') as: 'CustomerAction'

Agora você pode ver quais clientes têm direito a um reembolso. Em seguida, edite a instrução acima e a substitua pela próxima, que aborda a segunda condição. Se nenhuma das condições for válida, o resultado será send holiday card.

derive type:single value: IF(OrderValue >= (1.2 * (OrderValue_1 + OrderValue_2)), 'send rebate', IF(OrderValue <= (1.2 * (OrderValue_1 + OrderValue_2)), 'send coupon', 'send holiday card')) as: 'CustomerAction'

Resultados:

Após excluir as colunas OrderValue_1 e OrderValue_2, o conjunto de dados precisa ser semelhante ao mostrado a seguir. Observe que a ordem dos registros foi alterada, já que as transformações com as funções PREV foram agrupadas por CustId.

DataCustIdOrderIdOrderValueCustomerAction
04/01/16C001Ord001100enviar desconto
07/01/16C001Ord002500enviar desconto
15/01/16C001Ord006900enviar desconto
08/01/16C003Ord004700enviar desconto
11/01/16C003Ord005200enviar desconto
21/01/16C003Ord008400enviar cupom
07/01/16C002Ord003600enviar desconto
20/01/16C002Ord007300enviar desconto
21/01/16C002Ord009200enviar cupom
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.