Exemplo: Campo Derivado Persistente
Você pode ter um processo Selecionar configurado para escolher IDs com base em uma restrição em um campo derivado, conectado a um processo Captura Instantânea para efetuar saída dos registros selecionados que incluem esse campo derivado. Se você marcar o campo derivado para que seja persistente, o valor calculado será transmitido do processo Selecionar para o processo Captura Instantânea.
Outro uso dos campos derivados persistentes é com qualquer tipo de campo derivado agregado (por exemplo, AVG ou GROUPBY). Esses campos agregados são calculados com base em diversas linhas de dados na célula atual, portanto, o valor desses campos agregados muda conforme o conteúdo da célula é alterado. Com campos derivados persistentes, você pode optar por manter o valor calculado original, depois levá-lo para outros processos. Se você optar por recalcular o campo derivado, obterá um valor calculado com base nos registros restantes na célula atual.
Quando um processo obtém diversas entradas, como um processo Captura Instantânea que funciona com a entrada de dois processos Selecionar, todos os campos derivados persistentes estarão disponíveis para o processo de recebimento de dados.
Se um campo derivado persistente não estiver disponível em todos os processos Selecionar recebidos e estiver incluído na saída de um processo Captura Instantânea, o processo Captura Instantânea exibirá um valor NULO para esse campo derivado persistente em todas as linhas de saída dos processos Selecionar que não tinham esse campo derivado persistente.
Se um campo derivado persistente não estiver disponível em todos os processos Selecionar recebidos e você usá-lo para definir um processo Segmento, o processo Segmento terá segmentos vazios nos processos Selecionar que não tinham esse campo derivado persistente.
O processo Segmento permanecerá desconfigurado se você tentar definir um segmento com uma expressão que usa mais de um campo derivado persistente não disponível em todos os processos Selecionar.
As seguintes diretrizes se aplicam a campos derivados persistentes (PDFs):
*
*
*
*
*
*
No entanto, ao usar um campo derivado com base em um campo de tabela, a saída incluirá um campo de tabela indiretamente. Assim, haverá um registro para cada instância de um valor de ID. (Ou seja, se o valor de ID ocorrer sete vezes nos dados, haverá sete saídas de registros.)
Campos derivados persistentes armazenam apenas um único valor para cada ID de público, que é selecionado aleatoriamente a partir dos valores disponíveis. Isso significa que, ao trabalhar com dados não normalizados, você deverá usar uma função de macro GROUPBY para atingir o comportamento desejado.
Por exemplo, digamos que você deseja localizar, usando a tabela de transação de compras, a quantia mais alta em dólar em uma única transação feita por um cliente e salvá-la como um campo derivado persistente para o processamento de recebimento de dados. Você pode criar um campo derivado (e depois persisti-lo como um campo derivado persistente) como a seguir:
Highest_purchase_amount = groupby(CID, maxof, Purch_Amt)
Nos dados de transação de compra não normalizados, como a seguir, o cálculo deve ser feito como a seguir:
Quando o campo derivado for persistido, ele escolherá (aleatoriamente) qualquer valor (sendo todos $300) e persistirá o valor $300 para o cliente A.
Um segundo exemplo menos óbvio pode ser selecionar uma pontuação de modelo preditivo de uma tabela de pontuação para um modelo X específico. Aqui, o campo derivado pode se assemelhar ao seguinte:
ModelX_score = groupby(CID, maxof, if(Model = 'X', 1, 0), Score)
E os dados podem se assemelhar ao seguinte:
A persistência do campo derivado, ModelX_Score, fornece o resultado desejado de valor de pontuação 80. Para criar um campo derivado, esse valor é incorreto:
Bad_ModelX_score = if(Model = 'X', Score, NULL)
Isso resultaria no seguinte:
Depois, ao persistir o campo derivado Bad_ModelX_score, o valor persistido poderia ser NULL ou 80. Se você estiver trabalhando com dados não normalizados e os valores de campos derivados não forem todos iguais, a persistência desse campo derivado poderá resultar em qualquer um dos valores que estão sendo retornados. Por exemplo, definir Derived_field_Score = SCORE e persisti-lo poderia resultar no valor 57, 72 ou 80 para o cliente A. Para garantir o comportamento desejado, você deve usar a macro GROUPBY sobre o ID do cliente e garantir que o valor do campo derivado seja igual para todos os dados desse cliente.