メインコンテンツまでスキップ
waffle.svg
Domo Knowledge Base

Beast Mode計算例:その他の変換

Version 1

 

はじめに

平均時間(秒)計算、NULL値の削除、ページのAnalyzerリンクの作成など、その他のさまざまなBeast Mode計算の作成方法については、この記事を参照してください。

平均時間(秒)を計算する

所要平均時間の計算には、次のコードを使用します。平均時間は秒で返されますが、出力を分割すれば日数、時間、分を取得できます。

-- 日数 --

AVG(DATE(`end_date`)-DATE(`start_date`)) * 86400

+

-- 時間 --

AVG(HOUR(`end_date`)-HOUR(`start_date`)) * 3600

+

-- 分 --

AVG(MINUTE(`end_date`)-MINUTE(`start_date`)) * 60

+

-- 秒 --

AVG(SECOND(`end_date`)-SECOND(`start_date`))

折れ線グラフからNULL値を削除する

線がゼロにならないように、折れ線グラフのNULL値にフィルターを適用するには、次のコードを使います。

SUM(CASE WHEN `Number of SQLs` != 0 THEN`Number of SQLs` END)

SUM()は、CASEステートメントの外側に置くのがベストプラクティスです`Number of SQLs` = 0の場合、NULL値を返します。

NULL値をフィルタリングする

NULL値を含む列の値を合計する場合は、IFNULL関数を使用してNULL値をゼロに変換する必要があります。

例:

IFNULL(`col`,0)

たとえば、[カテゴリー] 列に [A]、[B]、[C] という値があり、[金額] 列に [20]、[10] という値と空白のセル(NULL)があるとします。[金額] 列をSUMすると、IFNULL計算によりNULL値が0に変換され、SUMは通常どおりに適用されます。

Page Analyzerのリンク(またはフィルターを使ったディープリンク)を作成する

Beast Mode計算を使うと、表カードの他のページへのリンクを作成し、またBeast Modeの設定に従ってAnalyzerのフィルターを適用させることができます。これは現在のカードのドリルパスにないカードを使ってストーリーを語りたいとき、または中央あるいは親の表カードからページにAnalyzerフィルターを簡単に適用できるようにしたいときに使える強力な機能です。

いずれかのリンクを作成するには、次のコードをBeast Modeにコピーします。

CONCAT('<a href="https://customer.domo.com/page/##########'

,'?pfilters=[{%22column%22:%22ColumnName%22,%22dataSourceId%22:%22DataSet ID%22,%22dataType%22:%22string%22,%22operand%22:%22OperandType%22,%22values%22:[%22'

,`Owner.Name`

,'%22]}]" target=%22_blank%22>'

,’Link Display Name

,'</a>'

)

カスタムのディープリンクを作成するには、上のboldの部分を次のように置き換えます。

https://customer.domo.com/page/########## ユーザーがリンクをクリックしたときの移動先DomoページのURLに置き換えます。
ColumnName フィルターを適用する列名に置き換えます。

 

DataSet ID

フィルターを適用するDataSetのDatasetIDに置き換えます。これを確認するには、Data CenterでDataSetに移動します。IDはURL内にあります。

DataSet ID URL.png
 

ヒント:情報を追加するDataSetに関係なく、ページのすべてのカードにフィルターを適用するには、Beast ModeからDataSet IDパラメータをまとめて削除します。
String フィルターを適用する列のデータタイプに置き換えます。文字列、値、日付のいずれかを使用できます。
OperandType フィルターに使用するオペランドのタイプに置き換えます。INやNOT_INのオプションがあります。
ヒント:NOT_INを使用する場合は、アンダースコアを含める必要があります。オペランドはURLに含まれるため、スペースを使用することはできません。

 

 

 

Owner.Name

フィルターを適用する値を含む列に置き換えます。例えば、 Owner.Name 値を使用する場合、列1のディープリンクをクリックすると、Bob Smithのデータが返されます。列3のリンクを選択すると、Jeff Clarkのデータが返されます。

Deep Link Table.png

target=%22_blank%22 (オプション)ブラウザの新しいタブでリンクを開きます。同じブラウザタブでリンクを開く場合は、この部分をBeast Modeから削除します。 
Link Display Name リンクに表示されるテキストです。URL全体を表示する代わりに、リンクの表示方法を指定できます。

複数のフィルターを追加する

複数のフィルターを追加するには、下のフィルター部分全体をコピーします。

,'?pfilters=[{%22column%22:%22ColumnName%22,%22dataSourceId%22:%DataSet ID%22,%22dataType%22:%22string%22,%22operand%22:%22OperandType%22,%22values%22:[%22'

,`Owner.Name2`

 

必要な数のフィルターを挿入します。

 

CONCAT('<a href="https://customer.domo.com/page/##########'

,'?pfilters=[{%22column%22:%22Owner.Name%22,%22dataSourceId%22:%DataSet ID%22,%22dataType%22:%22string%22,%22operand%22:%22OperandType%22,%22values%22:[%22'

,`Owner.Name`

,'?pfilters=[{%22column%22:%22Owner.Name%22,%22dataSourceId%22:%DataSet ID%22,%22dataType%22:%22string%22,%22operand%22:%22OperandType%22,%22values%22:[%22'

,`Owner.Name2`

,'%22]}]" target=%22_blank%22>'

,`Owner.Name`

,'</a>'

)

 

DomoのHTMLについての詳細は、「Beast Modeを使用してグラフィック、リンク、画像を表カードに追加する」を参照してください。 

ウェブフォームフィールドを利用する

直近に終了した月や現在の月をフィルターに反映するために、毎月多くのカードを更新する必要があるとします。一括で更新できる基準点としてフィルターを合理化し、すべてのカードが同じ新しい月または年を使用するようにトリガーすれば、各カードを個別に更新する必要はありません。例:Closed Month = Septまたは9、Current Month = Octまたは10、Closed Year = 2016。次の手順を実行して行います。

  1. 必要に応じて手動で更新し、現在の月数と年を指定する日付参照を持つウェブフォームを作成します。

  2. DataFlowを使用してウェブフォームをデータに結合します。

  3. ウェブフォームフィールドを利用するBeast Mode計算を作成します。
    例えば、9の値を持つ「Closed Month」列がある場合、このBeast Modeは次のように機能します。

    CASE

    WHEN MONTH(`Date`) = `Closed Month` THEN "Closed Month"

    ELSE "Other"

    END

  4. フィルターにこのBeast Modeを使用します。フィルターを「Closed Month」に設定します。そうすると、ウェブフォームの値を更新するたびに、そのフィルターを使用するすべてのカードに新しいデータが表示されます。

毎月の手作業が不要になるもう1つの方法として、DataFlowを使用してMAX(`Date`)を計算し、MAX(`Date`)と同じ月にあるすべてのデータを特定する列を追加する方法があります。カードで最新の月のみを使用する場合は、カード内の該当するフィールドにフィルターを適用します。