見出し画像

【Domo】Pfilterの作成方法と注意点

はじめに

Domoでは、ページのフィルター設定でインタラクションフィルターをONにすると、カードにある値をクリックするだけで、フィルターを掛けることが出来るので便利ですよね。

フィルター機能はこれだけではありません。
表カードの値をクリックして、別ページのカードにフィルターを掛けることが出来る「Pfilter」という機能もあるんです!

Pfilterとは何が出来るのか

まずはPfilterがどんな機能なのか、下図の製品売上ランキングカードで説明します。

図1.Pfilter

図1_v3

製品カテゴリの値にPfilterを設定しました。
表カード上にリンクが表示され、クリックが出来るようになります。

図2.製品情報ページ

図2_v2

図1の「調理品」をクリックすることで、別ページの「製品情報ページ(図2)」に遷移し、さらに調理品のみの情報が表示されます。

このように、カードの中の項目に対してリンク持たせ、さらにフィルタ条件を指定できる機能の事をPfilterと呼びます。

今回は、そんなPfilterの作成方法と作成時の注意点を図1の製品売上ランキングを例にご紹介します!!

作成方法

PfilterはBeastModeを使って作成します。
ただし、適応できるのは表カードのみです。

1.対象の表カードでAnalyzer画面を開き、右上にあるBEAST MODEをクリックします。

図3

2.作成する計算フィールド名とスクリプトを入力します。

図4_v4

スクリプトは以下のように入力します。

CONCAT(
'<a href=''①遷移先ページURL?pfilters=['
,'{"column":"②column Name"
,"dataSourceId":"③DataSet ID"
,"dataType":"string"
,"operand":"④Operand Type"
,"values":["'
,⑤Owner.Name
,'"]}'
,']'
,'''>'
,⑥Link Display Name
,'</a>'
)


各プロパティの詳細は以下を参考にしてください。

図10

フィルターを掛けるページに存在する、別のDataSetで作成されたカードにも同時にフィルターを掛けたい場合は、スクリプトに適用させたいDataSetIDを追記する必要があります。

図6_v4

DataSet IDは一つ目と違うものを入力しますが、column NameとOwner.Nameは同じでなければなりません。

スクリプトは以下を追加します。

,'{"column":"製品カテゴリ"
,"dataSourceId":"81df3ad4-b059-45a6-b59a-e006aa1c5078"
,"dataType":"string"
,"operand":"IN"
,"values":["'
,'製品カテゴリ'
,'"]}'


スクリプトの入力が完了したら、画面右下の「保存して閉じる」を押下し、BeastModeで作成した項目を表カードの列にセットし、カードを保存すれば完了です!

図7

注意点

Pfilter作成時はBeastModeでページ遷移させるためのURLを作成しています。そのため、URLの予約文字である「 " , # , % , & , ' , + , etc...」は使用できません。

今回の処理では、DataSetの項目の値を呼び出して使用しているため、その値に予約文字が含まれている場合はフィルターが掛からなくなってしまいます。

例えば、「製品カテゴリ」という項目に「スピリッツ&リキュール」という値が入っている場合、「&」が含まれているため「スピリッツ&リキュール」ではフィルターを掛けることが出来ません。

- 回避方法 -

予約文字をURLで使えるような文字に置換します。
そのためには、スクリプトにREPLACE関数を記述します。
REPLACE関数は特定の文字列を任意の文字列に置換することが出来る関数です。

Domo(BeastMode)でのREPLACE関数の使い方
REPLACE('検索する列','置換したい文字列','置換文字列')

使用例:

図8

上の図では、「製品カテゴリ」列にある「&」を「%26」に変換しています。置換文字列は一番最後にある、「参考:予約文字の置換コード一覧」をご確認ください。

スクリプトは以下のようになります。

,'{"column":"製品カテゴリ"
,"dataSourceId":"81df3ad4-b059-45a6-b59a-e006aa1c5078"
,"dataType":"string"
,"operand":"IN"
,"values":["'
,REPLACE('製品カテゴリ','&','%26')
,'"]}'


予約文字が2文字以上ある場合はREPLACE関数を以下のように追加していきます。

REPLACE(REPLACE('製品カテゴリ','&','%26'),'+','%2B')


この時、内側の処理から実行されていきます。
また、予約文字は「%○○」の形に置換するので、置換する項目の値に「%」がある場合は一番初めに処理されるようにスクリプトを入力しましょう!

まとめ

別ページにあるカードにフィルターを掛けることができる、Pfilterという機能がある
PfilterはBeastModeを使用して作成することができる
作成時はURLの予約文字に注意が必要。予約文字はREPLACE関数で置換する
「%」をREPLACEする場合、最初に処理が行われるように最も内側に記載する


参考

図9_v3


この記事が気に入ったらサポートをしてみませんか?