Oracle Analytics Cloud：データ・フローでランキングを計算する

# はじめに
ある集計データをもとにランクを計算してみたいと思います。
サンプルに使用したデータは、Autonomous Data Warehouse（**ADW**）のSHスキーマのデータを少し改造したものです。
顧客ごとに売上金額をもとにランキングして、分析してみたいと思います。

# ワークブックで計算を作成
事前に準備したビューをもとにOracle Analytics Cloud（**OAC**）でデータセットを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/f1a1e2f3-fc4c-13c1-b78d-9925d4418bad.png)
このビューでは、検索時点での前月に販売実績のあった顧客に関するデータが検索できるようになっています。
作成したデータセットを使用して、新しいワークブックを作成します。
左のペインの「マイ計算」を右クリックし、「計算の作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b75d225d-37e8-fa29-4ab8-f9cbbf9f21a0.png)

RANK関数を使用して式を入力します。ここでは「rank(販売金額)」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/5ff3828c-74fb-4aa3-06a2-6d9fb691fb51.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/fc528d06-abef-a790-2aaa-fb5cecaa657b.png)

作成した計算と「販売金額」列を使って表ビジュアライゼーションを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/9d2170d2-a26a-216b-ec6c-a7f3265be8e3.png)

「販売金額」は集計列なので、1行に集約されランクも「1」のみです。
そこで、「顧客ID」を表に含めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/35128d41-cd3b-e6e0-30c0-9c8d8f40f97f.png)

これで、顧客IDごとの販売金額をもとにしたランクが求められました。

データセットにはじめから販売金額をもとにした顧客ランクを示す列を作成しておけば、ワークブック内で計算を定義する必要はなくなります。
そこで、データフローでそのような計算を定義してみます。

# データ・フローの作成
一旦、ホームに戻ります。
「作成」をクリックして「データフロー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b6a6fadb-bc75-e5aa-f4b7-987617ccaca1.png)

先程のデータセットを選択して「追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/17bd0983-ac19-2be9-845e-d69847c07a20.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d2c839ec-fd65-2d16-74d4-14dfd49d2680.png)

データセットの右の「＋」をクリックして「列の選択」ステップを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/34535500-2d7d-21d6-4ba8-e42ce001b790.png)

「顧客ID」と「販売金額」を残して、他の列は除去します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/7626d346-b8d5-699e-27e9-3ee751e45ad4.png)

プレビューを見ると、この段階では「販売金額」列は集計されていないことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1956bc1d-9ef2-65ca-da59-9b8aa2d829e2.png)

そこで、次のステップでは「販売金額」を集計します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b05484c8-c973-81b1-bf1d-ee33183d5fc7.png)

集計関数は「合計」を選択し、グループ化基準は「顧客ID」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e12914ab-5e25-4c80-dd26-1e65a4babe88.png)

次にランクを求めるために「列の追加」ステップを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/019f7b92-c106-6b6d-a885-a1db10ee8c1d.png)

列の名前を「販売金額ランク」として、式を入力します。
前のステップで作成した「販売金額 合計」列をもとにRANKを求めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/43e6a39a-19ed-a398-4025-48e2703a655c.png)

上位10顧客のみ抽出するため、「フィルタ」ステップを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b7bb7bf7-c8c9-e67e-c0a6-87f5246c7afb.png)

「＋」をクリックしてフィルタを追加します。
「販売金額ランク」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/fae058d9-4e68-10f9-5fac-af12f8d2e0ce.png)

フィルタ条件を開始を「1」、終了を「10」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/cfb039fd-edaf-6267-d42e-91787266545a.png)

最後のステップとして、このデータフローの結果作成されるデータを名前をつけてデータセットとして保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/572518cc-5f19-eba6-589a-10eeaa14e111.png)

データセット名は、「前月上位10顧客」としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/33fb5773-2c36-365c-7fda-cf659fccb12f.png)

データフローに名前を付けて保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/5bbecefe-cfbe-6667-8e57-2e0fe14bc05c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/cbf9f404-59a5-4e7b-e35e-71971c95a360.png)

# 実行
データフローを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/0a16e9d4-e92e-bc35-84cb-c35185bafef3.png)

しばらく待つとデータセットが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d497097f-3dab-8d23-2e53-86815ab45f39.png)

# 作成したデータセットを確認
作成されたデータセットをクリックして、新しいワークブックを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/418d9149-f8b5-257d-5787-a69f51a22584.png)
先月の上位10顧客は、売上ベースではあまり大きな差がないことがわかりました。

# おわりに
ワークブック内で作成した計算は、そのワークブックのなかでのみ使用できます。
もちろん、ワークブックを他のユーザーと共有することで、広く分析結果を共有することは可能です。

計算した結果をデータセットとして保存すると、そのデータセットを共有することで、どのワークブックからも容易に利用できるようになります。

ぜひ、両者を使い分けてみてください。