Window - função de script
Window() executa cálculos de múltiplas linhas, produzindo um valor para cada linha separadamente.
Você pode usar as funções de Window para realizar operações como:
Comparar um valor numérico individual em uma linha com a média, o máximo ou o mínimo na coluna.
Calcular a classificação de um valor individual, na coluna ou na tabela inteira.
A função Window não altera o número de registros na tabela, mas ainda pode executar tarefas semelhantes como funções de agregação, relacionais e de intervalo.
A função Window deve ter um cache dentro do comando LOAD da tabela com a qual você está trabalhando para adicionar à tabela. Por exemplo:
Window oferece suporte a funções gerais, como arredondamento ou operações numéricas básicas. Por exemplo:
Você pode definir uma janela deslizante para a função Window. Isso define o número de linhas usadas ao aplicar a função Window na linha atual. Por exemplo, você pode definir a janela como as 3 linhas anteriores e as 3 linhas subsequentes.
Sintaxe:
Tipo de dados de retorno: um novo campo adicionado à tabela resultante criada pelo comando LOAD.
Argumentos:
Argumento | Descrição |
---|---|
input_expr | A expressão de entrada calculada e retornada pela função. Deve ser qualquer expressão baseada em uma agregação, como Median(Salary). Por exemplo: Window(Median(Salary)) as MedianSalary A entrada também pode ser um nome de campo sem agregação aplicada. Neste caso, Window trata-o como se a função Only() fosse aplicada a esse campo. Por exemplo: Window(Salary,Department) as WSalary
Opcionalmente, você pode definir o particionamento com a expressão de entrada. O particionamento é igual ao agrupamento obtido pela cláusula group by, com a diferença de que o resultado é adicionado como uma nova coluna à tabela de entrada. O particionamento não reduz o número de registros da tabela de entrada. Vários campos de partição podem ser definidos. Exemplo:
LOAD
Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300) + AddMonths(OrderDate,-6) as MAX_Sales_City_Last_6_Mos, Window(Avg(Sales), City, 'ASC', OrderDate, City = 'Portland') + AddMonths(OrderDate,-6) as Avg_Sales_Portland_Last_6_Mos, Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300) + AddMonths(OrderDate,-12) as MAX_Sales_City_Last_12_Mos; LOAD City, Sales, OrderDate FROM [lib://:DataFiles/Sales Data.xlsx] (ooxml, embedded labels, table is [Sales Data]);
|
partition1, partition2 | Após input_expr, você pode definir qualquer número de partições. Partições são campos que definem com quais combinações aplicar as agregações. A agregação é aplicada separadamente com cada partição. Por exemplo: Window(Avg(Salary), Unit, Department, Country) as AvgSalary Acima, as partições são Unit, Department e Country. As partições não são obrigatórias, mas são necessárias para o janelamento adequado dos campos. |
sort_type, [sort_expr]] | Opcionalmente, especifique o tipo de classificação e a expressão de classificação. sort_type pode ter um de dois valores:
Se você definir sort_type, precisará definir uma expressão de classificação. Esta é uma expressão que decide a ordem das linhas dentro de uma partição. Por exemplo: Window(RecNo(), Department, 'ASC', Year) No exemplo acima, os resultados dentro da partição são classificados de forma crescente por campo Year. Nota informativaO tipo de classificação e a expressão de classificação são necessários principalmente apenas com as funções RecNo e WRank. |
filter_expr | Opcionalmente, adicione uma expressão de filtro. Esta é uma expressão booleana que decide se o registro deve ou não ser incluído no cálculo. Este parâmetro pode ser omitido completamente e o resultado deverá ser que não há filtro. Por exemplo: Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7) as wAvgSalary) as wAvgSalaryIfEmpIs3or7 |
[start_expr,end_expr] | Opcionalmente, defina o argumento para a funcionalidade da janela deslizante. Uma janela deslizante requer dois argumentos:
Por exemplo, se você quiser incluir as 3 linhas anteriores, a linha atual e a próxima linha seguinte: Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, -3, 1) Para indicar todas as linhas anteriores ou todas as linhas subsequentes, você pode usar a função Unbounded(). Por exemplo, para incluir todas as linhas anteriores, a linha atual e a linha seguinte: Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, UNBOUNDED(), 1) Por exemplo, para incluir a terceira linha da linha atual e todas as linhas subsequentes: Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, 3, UNBOUNDED()) |
Exemplo – Adicionando um campo contendo uma agregação
Exemplo – Adicionando um campo contendo uma agregação filtrada para valores específicos
Exemplo – Adicionando um campo com janela deslizante
Limitações
O Window tem as seguintes limitações:
Window é uma função que consome muitos recursos, principalmente em termos de consumo de memória.
Não há suporte para Window no Qlik Sense Mobile.
As expressões de gráfico não são compatíveis com Window.
Você não pode aninhar funções Window dentro de outras funções Window.
Window não pode ser usado dentro de uma função de agregação.
Window precisa ser capaz de digitalizar a tabela inteira.
WRank(), RecNo() e RowNo() não pode ser usado com o Window ao usar a funcionalidade de janela deslizante.