Window - スクリプト関数
Window() は複数の行から計算を実行し、各行の値を個別に生成します。
Window 関数を使用して、次のような演算を実行できます。
行内の個別の数値と列内の平均値、最大値、最小値を比較する。
列内またはテーブル全体内の個々の値のランクを計算します。
Window 関数はテーブル内のレコード数を変更しませんが、集計関数、関係関数、範囲関数と同様のタスクを実行できます。
Window 関数では、テーブルに追加するために作業しているテーブルの LOAD ステートメント内にキャッシュが必要です。例:
Window は、丸めや基本的な数値演算などの一般的な関数をサポートします。例:
Window 関数については、スライディング ウィンドウを定義できます。これにより、現在の行に Window 関数を適用するときに使用される行の数が設定されます。たとえば、Window を前の 3 行と後続の 3 行に設定できます。
構文:
戻り値のデータ型: LOAD ステートメントによって作成された結果テーブルに新しい項目が追加されました。
引数:
| 引数 | 説明 |
|---|---|
| input_expr | 関数によって計算されて戻された入力数式。集計に基づいた数式である必要があります (Median(Salary) など)。例: Window(Median(Salary)) as MedianSalary この入力は、集計が適用されていない項目名であることも考えられます。この場合、Window が、Only() 関数がその項目に適用されたかのように処理します。例: Window(Salary,Department) as WSalary
オプションで、入力式にパーティショニングを定義できます。パーティショニングは group by 節によって達成されたグループ化と同じですが、結果が入力テーブルの新しい列に追加される点が異なります。パーティショニングを行っても、入力テーブルのレコード数は減りません。複数のパーティション項目を定義できます。 例:
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]FROM [lib://AttachedFiles/Sales Data.xlsx] (ooxml, embedded labels, table is [Sales Data]); |
| partition1, partition2 | input_expr の後は、任意の数のパーティションを定義できます。パーティションは、集計を適用する組み合わせを定義する項目です。集計は、パーティションごとに個別に適用されます。例: Window(Avg(Salary), Unit, Department, Country) as AvgSalary 上記の場合、パーティションは Unit、Department、および Country です。 パーティションは必須ではありませんが、項目の適切なウィンドウ作成に必要です。 |
| sort_type, [sort_expr]] | オプションで、ソート タイプとソート数式を指定します。sort_type には、次の 2 つの値のいずれかを指定できます。
sort_type を定義する場合は、ソート式を定義する必要があります。これは、パーティション内で行の順序を決定する数式です。 例: Window(RecNo(), Department, 'ASC', Year) 上記の例では、パーティション内の結果は Year 項目で昇順にソートされます。 情報メモソート タイプとソート数式は、主に RecNo と WRank 関数にのみ必要となります。 |
| filter_expr | オプションで、フィルター式を追加します。これは、レコードを計算に含めるかどうかを決定するブール式です。 このパラメータは完全に省略でき、結果は「フィルターなし」となります。 例: Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7) as wAvgSalary) as wAvgSalaryIfEmpIs3or7 |
| [start_expr,end_expr] | オプションで、スライディング ウィンドウ機能の引数を設定します。 スライディング ウィンドウには 2 つの引数が必要です。
例えば、前の 3 行、現在の行、次の行を含める場合は、次のようになります。 Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, -3, 1) 先行行と後続行をすべて示すには、Unbounded() 関数を使用できます。例えば、先行行、現行行、後続行を含めたい場合: Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, UNBOUNDED(), 1) 例えば、現行行から 3 行目と、すべての後続行を含めるには: Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, 3, UNBOUNDED()) |
例 - 集計を含む項目の追加
例 - 特定の値でフィルタリングされた集計を含む項目の追加
例 - スライディング ウィンドウを使用した項目の追加
制限
Window には、次の制限があります。
Window はリソースを大量に消費する機能であり、特にメモリの消費量が大きくなります。
Window は Qlik Sense Mobile には対応していません。
チャートの数式は Windowをサポートしていません。
Window 関数は、他の Window 関数の内側にネストできません。
Window は、集計関数の内側で使用できません。
Window は、テーブル全体をスキャンできる必要があります。
スライディング ウィンドウ機能を使用している場合、WRank()、RecNo()、および RowNo() は、Window と使用できません。