ポイント: スノーフレーク遅延関数のチュートリアルは、SQLの遅延関数を使用して移動平均を計算し、売上トレンドを分析する方法を示します。サンプルテーブルを作成し、計算を検証するためのSQLコードスニペットを提供します。
- 移動平均計算のために遅延関数を利用します。
- 実用的なアプリケーションのためにSQLコードスニペットとサンプルデータを提供します。
このチュートリアルでは、遅延関数を使用してスノーフレークで移動平均を計算する方法を示します。
これは、スノーフレークSQL集約関数とテーブル結合およびスノーフレークウィンドウ関数: パーティションと順序によるで共有した作業に基づいています。
遅延を使用して移動平均を計算する
lag()関数を使用して移動平均を計算できます。移動平均は、トレンドを把握したり、日々の数値の変動を減らすために使用します。
言い換えれば、製品のパフォーマンスを確認するためには、一日の売上ではなく、一週間の売上を見る方が良いです。
サンプルデータを作成
これを学ぶために、まずこれらの2つのテーブルを作成します。
CREATE TABLE customers
(
customernumber varchar(100) PRIMARY KEY,
customername varchar(50),
phonenumber varchar(50),
postalcode varchar(50),
locale varchar(10),
datecreated date,
email varchar(50)
);
CREATE TABLE orders
(
customernumber varchar(100) PRIMARY KEY,
ordernumber varchar(100),
comments varchar(200),
orderdate date,
ordertype varchar(10),
shipdate date,
discount number,
quantity int,
productnumber varchar(50)
)
次に、このSQLデータを貼り付けます。データの先頭は次のようになります:
insert into customers (customernumber,customername,phonenumber,postalcode,locale,datecreated,email) values ('440','tiqthogsjwsedifisiir','3077854','vdew','','2020-09-27','[email protected]');
insert into orders (customernumber,ordernumber,comments,orderdate,ordertype,shipdate,discount,quantity,productnumber) values ('440','402','swgstdhmju','2020-09-27','sale','2020-10-01','0.7005950240358919','61','BB111');
insert into customers (customernumber,customername,phonenumber,postalcode,locale,datecreated,email) values ('802','hrdngzutwelfhgwcyznt','1606845','rnmk','','2020-09-27','[email protected]');
insert into orders (customernumber,ordernumber,comments,orderdate,ordertype,shipdate,discount,quantity,productnumber) values ('802','829','jybwzvoyzb','2020-09-27','sale','2020-10-06','0.3702248922841853','75','FF4444');
insert into customers (customernumber,customername,phonenumber,postalcode,locale,datecreated,email) values ('199','ogvaevvhhqtjcqggafnv','8452159','hyxm','','2020-09-27','[email protected]');
SQLステートメントを書く
次に、前の4日間の移動平均の総売上を計算したいと思います。
ここでは、1日ごとの注文合計を得るために、選択ステートメント内に別の選択ステートメントがあります。次に、遅延ステートメントはその1つのレコードを見て、前の日を見ます。
select shipdate, (quantity + lag(quantity,1) over (order by shipdate) +
lag(quantity,2) over (order by shipdate) +
lag(quantity,3)over (order by shipdate) + lag(quantity,4)
over (order by shipdate)) / 5 as movingaverage from
(select shipdate, sum(quantity) as quantity from orders group by shipdate);
これが移動平均です。最初の行はnullで、遅延関数が存在しない行のウィンドウを超えて遡るためです。
この計算が正しいことを別の方法で証明できます。
出荷日ごとに注文を合計しましょう。
select shipdate, sum(quantity)
from orders group by shipdate
order by shipdate;
次に、結果をスプレッドシートにコピーします:
- 左はウィンドウ関数です。
- 右は上記のクエリです。
スプレッドシート関数average()を使用して列を追加しましたので、数字が同じであることが簡単にわかります。したがって、ウィンドウの遅延関数がどのように機能するかを見ることができます。
windows function sum and group by =AVERAGE(E3:E7)
SHIPDATE MOVINGAVERAGE SHIPDATE SUM(QUANTITY) moving average
2020-09-30 2020-09-30 427
2020-10-01 2020-10-01 230
2020-10-02 2020-10-02 657
2020-10-03 2020-10-03 604
2020-10-04 488.6 2020-10-04 525 488.6
2020-10-05 462 2020-10-05 294 462
2020-10-06 547.2 2020-10-06 656 547.2
2020-10-07 485.2 2020-10-07 347 485.2
2020-10-08 470.8 2020-10-08 532 470.8
2020-10-09 486.2 2020-10-09 602 486.2
2020-10-10 495.2 2020-10-10 339 495.2
2020-10-11 465.8 2020-10-11 509 465.8
追加のリソース
このようなチュートリアルをもっと探すには、これらのリソースを探索してください:
スノーフレークガイド
これらの投稿は私自身の意見であり、BMCの立場、戦略、または意見を必ずしも表すものではありません。