OACの複数のキャンバスでフィルタ内容を共有するには

# はじめに
OAC（**Oracle Analytics Cloud**）では、セルフサービスでデータ分析する際に「ワークブック」を作成します。
ワークブックにはひとつ以上のキャンバスが含まれており、キャンバスにビジュアライゼーションを配置してデータの可視化をおこないます。
データはフィルタすることが可能です。
フィルタの影響範囲は
- ビジュアライゼーション単位
- キャンバス単位

で設定可能です。
ワークブックに複数のキャンバスがあるとき、キャンバス間でフィルタ内容を共有する方法を紹介します。

使用したOACは、2024 September Updateです。

# ワークブックを作成する
OACにログインして、「作成」をクリックして「ワークブック」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/6f252e67-e571-2a6f-a7bc-68f997ff2a77.png)

ここでは「Sample Order Lines」データセットを選択しましたが、どれを選んでも構いません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/7ffd29b0-c5bd-7aa4-3265-4e6186f98b71.png)

キャンバス1だけが存在する（そして、まだ何も定義されていない）ワークブックが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c5cede25-5598-bbcb-7cf2-d5f0c220fc8f.png)

## フィルタ・バーにフィルタを作成する
ここがフィルタ・バーです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/26b00c2a-5670-2598-01bb-3460a41268f4.png)

いくつかの項目をフィルタ・バーにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/9f7b3601-e55c-81f2-2f5a-1cc366d84193.png)

一番左の「Order Priority」をクリックすると、フィルタを設定するためのリストが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ad6ba4b3-f373-070c-06f3-7c510dbd6390.png)

任意の値を選択します。
それぞれ、一つづつ値を選択したので「(1)」と表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e01848f7-1336-7189-9e75-7ce04bbd4031.png)

右クリックして、「値の表示」を選択すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/045128be-ecf7-dc16-c9b9-672ce7da5e45.png)

フィルタとして選択した値も表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/7c38f0cb-f576-357e-2d39-1f15143ecd69.png)

この状態で、任意の属性項目と集計項目をキャンバス1にドラッグ＆ドロップします。
こうなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1cbb1fcb-a19c-26da-2c79-7b56d1dca9d8.png)

当然、フィルタを変更するとグラフも変化するのがわかります。

## キャンバスを追加する
「＋」をクリックしてキャンバス2を追加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b803ac67-ca6a-9e36-eb16-31242d8ce529.png)

追加したキャンバスを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b61fafb1-1f15-2f1f-cf38-90ead07efa7d.png)

フィルタ・バーを見ると、隣のキャンバス1のフィルタ設定が引き継がれていないことがわかります。
キャンバス1に戻り、フィルタ・バーの「Order Priority」を右クリックして「すべてのキャンバスに固定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/fb29eb4d-44c2-5dc1-ae9c-21b9d12292ab.png)

もう一度、キャンバス2に移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d71444e4-8d77-b60d-bf27-fe0dd51a1965.png)

今度は、固定するように設定したフィルタがこちらのキャンバスにも表示されているのがわかります。
フィルタ内容を変更すると、キャンバス1のフィルタも同じ内容に更新されます。

フィルタ・バーのフィルタをキャンバス間で共有できました。
でも、キャンバスがもっとたくさんあったらどうでしょうか？
キャンバス1とキャンバス2ではフィルタを共有したいけど、キャンバス3とは共有したくないというケースはどうすれば良いでしょうか？

今の状態で、もうひとつキャンバスを追加すると（例えばキャンバス3を追加）、そのキャンバスのフィルタ・バーには固定されたフィルタが最初から設定された状態になります。

（追加した）キャンバス3を開いて、フィルタの「すべてのキャンバスに固定」を解除すると、フィルタの固定は解除されキャンバス3にのみ残ります。
キャンバス1とキャンバス2からは、固定が解除されたフィルタは削除されます。

**固定解除する場合は、どのキャンバスを開いて解除するかが重要となります。**

今回は、固定したフィルタをキャンバス1残して、他のキャンバスからは削除したいので、キャンバス1をひらいて「すべてのキャンバスに固定」を取り消します。

## フィルタをパラメータにバインドする
別の方法で、フィルタ内容を任意のキャンバス間で共有します。
キャンバス1を開き、フィルタ・バーのフィルタをクリックします。
「パラメータにバインド」をクリックして、「パラメータの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ccd4eacb-58d4-f638-4019-cb4e3b9a7070.png)

ワークブックにパラメータが作成されたことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/713694f3-9a7a-28ad-b83f-abbc7a68763c.png)

これで、フィルタで設定した値がバインドされたパラメータにも格納されます。

## 他のキャンバスから参照する
キャンバス2に移動します。
「Order Priority」をフィルタ・バーにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/681c711c-15b6-add1-4963-2f6793c8eaa3.png)

このままだと、たまたまキャンバス1と同じ項目でフィルタしているだけで、それぞれが独立したフィルタ値を保持することになります。
※つまり、フィルタ内容を共有していません。

そこで、「パラメータにバインド」をクリックして、キャンバス1のフィルタがバインドされているパラメータにこのフィルタもバインドします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/f9a40762-349e-41e5-c4a6-0d0b62cf6c8c.png)

これで、パタメータを介してフィルタ内容をキャンバス1とキャンバス2で共有することができます。
試しに、キャンバス2で「Order Priority」フィルタに適当に値を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1a58d450-a607-d934-4f1f-845a3f65cb4e.png)

キャンバス1を開くと、同じ内容で「Order Priority」がフィルタされているのがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/daac1e6f-7a7d-2746-36fe-a71eba2b25ca.png)

キャンバス3には、何も設定していないのでフィルタはありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/aefb0a4d-e4f8-dac8-8f4a-be8441e6b7f0.png)

必要なキャンバス間でのみフィルタ内容を共有できました。

# おわりに
フィルタ・バーのフィルタをすべてのキャンバスで共有する方法と、特定のキャンバス間でのみ共有する方法を紹介しました。
必要に応じて使い分けてください。

# 参考情報
- [Oracle Analytics Cloud：ビジュアライゼーションをフィルタする](https://qiita.com/tyo38/items/9d2a753074a353bb21dd)
- [Oracle Analytics Cloud：パラメータを使用したインタラクティブなビジュアライゼーション](https://qiita.com/tyo38/items/58f5ff36a5777513ed2b)