スノーフレーク遅延関数と移動平均

スノーフレーク遅延関数と移動平均

  • オーケストレーション
6分で読めます 更新日 Oct 9, 2020

ポイント: スノーフレーク遅延関数のチュートリアルは、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の立場、戦略、または意見を必ずしも表すものではありません。

オーケストレーションの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。