見出し画像

【1/2】DomoでよくあるBeast Modeをまとめます

ChatGPTでDOMOの関数を記述させる方法論についても語っておりますので、ご参考まで



0.3桁ごとにカンマで区切る

Beast Modeを使用して大きな数字を可読性の高い形式に変換します。

1.目的

Beast Modeを使用する目的は、大きな数値を、3桁ごとにカンマで区切ることで可読性を高めることです。特に、データが大量にある場合や、数値が非常に大き-い場合、一見しただけでは理解しにくい数値を、視覚的に理解しやすい形に整形します。

2.beast mode入力例

-Thousand separater
CONCAT('Total Amount: ',
  CASE WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 12 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 4, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 7, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 10, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 11 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 2), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 3, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 6, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 9, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 10 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 1), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 2, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 5, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 7, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 9 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 4, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 7, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 8 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 2), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 3, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 6, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 7 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 1), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 2, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 5, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 6 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 3), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 4, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 5 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 2), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 3, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) = 4 THEN
  CONCAT(
  SUBSTRING(ROUND(SUM(`random_number`), 0), 1, 1), ',',
  SUBSTRING(ROUND(SUM(`random_number`), 0), 2, 3)
  )
WHEN LENGTH(ROUND(SUM(`random_number`), 0)) <= 3 THEN
  ROUND(SUM(`random_number`), 0)
WHEN SUM(`random_number`) IS NULL THEN 0
ELSE 'ERROR'
END
)

3.説明

このBeast Modeの入力例では、データの列`random_number`の合計値を計算し、その合計値の桁数に応じて異なるフォーマットで数値を表示します。大きな数字を表示するときにそのままでは視覚的に理解しにくいため、3桁ごとにカンマを挿入して数値を整形し、より見やすい形式で表示します。

数値がNULLの場合は0を表示し、それ以外の予期せぬケースに対しては'ERROR'を表示するようになっています。このようなエラーハンドリングは、予期しないデータに対する対応を可能にします。

この手法は、データの分析やレポート作成において、大量の数値データを一目で理解しやすく表示するために用いられます。数値の大きさに応じて動的に表示を調整するので、あらゆる大きさの数値に対応可能です。

0.CONCATの使い方

Beast Modeを使用して、店舗名と店舗コードを連結し、特定のフォーマットで表示します。

1.目的

Beast Modeを使用する目的は、店舗名と店舗コードを組み合わせて表示することで、データの視覚的理解を促進することです。これは、店舗名だけではなく、店舗コードも同時に表示することで、データの特定や分析をより簡単にします。

2.beast mode入力例

CONCAT(
  
  `shop_name`,
  '(',
  `shop_code`,
  ')'
  
  )

3.説明

このBeast Modeの入力例では、データの列`shop_name`と`shop_code`を連結し、特定のフォーマットで表示します。具体的には、店舗名と店舗コードを括弧 "(" と ")" で囲んで一緒に表示します。

この手法は、複数の関連するデータ要素を一つの視覚的に理解しやすい形式で表示するために用いられます。たとえば、ビジネスにおいては、店舗名とその店舗のユニークなコードを一緒に表示することで、データの特定や比較、分析が容易になります。このような形式は、データダッシュボードやレポートでよく見られ、ユーザが必要とする情報を短時間で得られるようにします。

0.ユニークな店舗コードの数をカウントし、店舗数を算出

Beast Modeを使用して、ユニークな店舗コードの数をカウントし、店舗数を算出します。

1.目的

Beast Modeを使用する目的は、データセット内のユニークな店舗数を確認することです。これは、ビジネスの規模を理解したり、店舗展開の進行度を把握したりするために非常に有用です。

2.beast mode入力例

COUNT(distinct `shop_code`)

3.説明

このBeast Modeの入力例では、ユニークな`shop_code`の数をカウントします。具体的には、`shop_code`の値が同じ行は1つとしてカウントし、全てのユニークな`shop_code`の数を合計します。

この手法は、ビジネスデータ分析において一般的に使用されます。例えば、小売業やサービス業など、多くの店舗を運営している企業では、現在の運営店舗数を把握することが重要です。それは、ビジネスの規模を理解するだけでなく、新しい店舗の開設や既存店舗の閉鎖など、店舗運営の動向を追跡するためにも必要な情報です。

この情報を得るために、ユニークな店舗コード(`shop_code`)をカウントすることで、各店舗がユニークに識別され、重複が排除されます。その結果、正確な店舗数が算出されます。

0.現在の週かそれ以前の週かでセグメンテーション

Beast Modeを使用して、特定の日付(`Date`)が現在の週("今週のみ")かそれ以前の週("先週まで")であるかを判断します。

1.目的

このBeast Modeを使用する目的は、データを特定の週に基づいてセグメンテーションすることです。これは、週ごとのパフォーマンスの比較、トレンド分析、週間の進行度の確認など、時系列分析を行う際に非常に有用です。

2.beast mode入力例

case WEEK(`Date`,22) when WEEK(CURRENT_DATE(),22) then '今週のみ' else '先週まで' end

3.説明

このBeast Modeの入力例では、指定された日付(`Date`)が現在の週("今週のみ")であるかそれ以前の週("先週まで")であるかを判断しています。

具体的には、WEEK関数を使用して、指定した日付と現在の日付の週番号を取得します。その後、CASE文を用いて、日付が現在の週にある場合は'今週のみ'を、それ以外の場合は'先週まで'を返します。

この手法は、特に時系列データの分析で重要です。週別の売上分析、ユーザーエンゲージメントの変動、週間目標の進行度など、多くのビジネス上の指標やKPIの計測に役立ちます。この関数を使用することで、一週間を単位とした時間軸に沿ってデータを分析できるため、経営者やデータアナリストがビジネスのパフォーマンスをリアルタイムで把握し、適切な意思決定を行うのに有用です。

0.'・月/日(曜日)'の形式

Beast Modeを使用して、特定の日付(`Date`)を'月/日(曜日)'の形式で表示します。

1.目的

このBeast Modeの目的は、データの日付をより人間が理解しやすい形式で表示することです。これはデータの読みやすさを向上させ、ユーザーやデータアナリストが特定の日付のデータを直感的に理解するのに役立ちます。

2.beast mode入力例

CONCAT(
  '・',
DATE_FORMAT(`Date`, '%m/%d'),
  '(', 
 case WEEKDAY(`Date`) 
  when 1 then '日'
  when 2 then '月'
  when 3 then '火'
  when 4 then '水'
  when 5 then '木'
  when 6 then '金'
  when 7 then '土'
  end,')')

3.説明

このBeast Modeの入力例では、指定された日付(`Date`)を特定のフォーマットに変換し、その日の曜日も同時に表示します。

具体的には、まずDATE_FORMAT関数を使用して、日付を'月/日'の形式に変換します。次に、WEEKDAY関数を使用して日付から曜日を取得し、その結果をCASE文で日本語の曜日名に変換します。最終的な結果は、'・月/日(曜日)'の形式で出力されます。

この手法は、特に時系列データの表示や分析において有用です。日付と曜日が組み合わせて表示されることで、データを直感的に理解しやすくなり、特定の日や曜日の傾向を把握するのに役立ちます。また、曜日ごとの売上分析や、曜日によるユーザー行動の差異を探るなど、多くのビジネス上の分析に使用できます。

0.その月の最終日までの日数

Beast Modeを使用して、特定の日付(`Date`)からその月の最終日までの残り日数を計算します。

1.目的

このBeast Modeの目的は、月の進行状況や期間内の残り日数を数値で把握することです。これは、プロジェクトの進行状況、セールやプロモーションの期間、月末までの作業期限など、多くのビジネス上の状況で有用な情報を提供します。

2.beast mode入力例

DATEDIFF(LAST_DAY(`Date`),CURRENT_DATE())

3.説明

このBeast Modeの入力例では、指定された日付(`Date`)からその月の最終日までの日数を計算します。具体的には、MySQLのDATEDIFF関数を使用して日付の差を求め、LAST_DAY関数を使用してその月の最後の日を取得します。この計算結果は、特定の日付から月末までの残り日数を示す整数値として出力されます。

この手法は、時間に基づく目標や予測を管理し、ビジネスの進行状況を監視するために非常に有用です。例えば、月末までの売上目標に対する進行状況、プロジェクトの完了までの残り日数、特定の期間内のリソースの利用可能性などを評価するのに使用できます。

0.月曜日はじめの週ごとに集計

Beast Modeを用いて、特定の日付(`Date`)からその週の月曜日の日付を計算します。

1.目的

このBeast Modeの目的は、週単位の分析やレポートに役立つ基準日として、その週の月曜日の日付を得ることです。特定の日から週の初めまでを辿ることで、週次のパフォーマンス分析、予測、またはレポートの作成に利用できます。

2.beast mode入力例

SUBDATE((`Date`), DAYOFWEEK(`Date`)+5)

3.説明

このBeast Modeの入力例では、指定された日付(`Date`)からその週の月曜日までの日付を計算します。具体的には、MySQLのSUBDATE関数を使用して指定した日付から特定の日数を減算し、DAYOFWEEK関数を使用してその日が週の何日目であるかを取得します。

この計算の結果は、その週の月曜日の日付を示します。これにより、週次のパフォーマンスを追跡したり、特定の週のレポートを作成したりする際に基準となる日付を取得することができます。具体的には、週ごとの販売パフォーマンス、週次プロジェクトの進捗状況、週ごとの在庫管理など、さまざまなビジネス上の状況で使用することができます。

0.月間の変動をConcatで

Beast Modeを使用して、先月と今月の特定の指標(この場合は「名義相違」数)の比較を行います。

1.目的

このBeast Modeの目的は、特定の指標の月間推移を把握し、それに基づいたビジネス判断を行うためです。

2.beast mode入力例

CONCAT(
  '【名義相違】先月:',
  IFNULL(SUM(CASE WHEN MONTH(`Date`)=MONTH(CURRENT_DATE())-1 THEN `MeasureField` END),0),
  '件→今月:',
  IFNULL(SUM(CASE WHEN MONTH(`Date`)=MONTH(CURRENT_DATE()) THEN `MeasureField` END),0),
  '件'
  )

3.説明

このBeast Modeの入力例では、特定の指標(この例では名義相違数`MeasureField`)の先月と今月の値を比較します。

具体的には、各行の日付フィールド`Date`が先月のものか今月のものかを判定し、それぞれの月に対応する名義相違数を合計します。もし合計値がNULL(つまりその月のデータが存在しない場合)であれば、0として扱います。

結果として、'【名義相違】先月:X件→今月:Y件'という形式の文字列が出力されます。これにより、名義相違数が前月と比較して増減したかを一目で確認することができます。この情報は、業務プロセスの改善や問題解決に役立つ可能性があります。

0.獲得力の計算:週末の分析を中心に

1. 目的

この記事では、特定のデータ(例:商品の売上、ユーザーの活動量など)の週末(土曜日と日曜日)における「獲得力」を計算する方法を解説します。ここで言う「獲得力」とは、週末の日数に対するデータの合計値を示しています。

2. Beast Mode入力例

SUM(case when WEEKDAY(`Date`)=1 or WEEKDAY(`Date`)=7 then`ItemSales`end)/ 
COUNT(distinct case when WEEKDAY(`Date`)=1 or WEEKDAY(`Date`)=7 then`Date` end) 

3. 説明

上記のBeast Modeの式は、特定のデータ(ここでは`ItemSales`と表現)の週末(土曜日と日曜日)における平均獲得力を計算します。獲得力は、週末の日数に対する`ItemSales`の合計を算出しています。

具体的には、`WEEKDAY(`Date`)=1`および`WEEKDAY(`Date`)=7`の条件に一致する日付における`ItemSales`の合計を求め、それを週末の日数で割っています。

この計算により、週末一日あたりの平均獲得力を求めることができます。これにより、週末のパフォーマンスを評価し、ビジネス戦略を調整するための洞察を得ることができます。

0.CASE文を用いてグルーピング

Beast Modeを用いて、特定の「shop_code」を持つ店舗を、所属する組織グループに紐づけます。

1.目的

このBeast Modeの目的は、「shop_code」をもとに店舗が所属する組織グループを特定し、その結果を表示することです。これにより、特定の組織グループの売上や利益などを計算するための前処理として、店舗を組織グループにマッピングすることが可能となります。

2.beast mode入力例

CASE `shop_code`
when 9901 then 'イベントグループ'
when 161 then '第一エリアグループ'
when 751 then '第二エリアグループ'
when 8443 then '第三エリアグループ'
END

3.説明

このBeast Modeの入力例では、CASE文を用いて「shop_code」をもとに店舗が所属する組織グループを特定します。

具体的には、各行において`shop_code`の値が9901の場合は'イベントグループ'、161の場合は'第一エリアグループ'、751の場合は'第二エリアグループ'、8443の場合は'第三エリアグループ'と出力します。

これにより、「shop_code」の値を基にした店舗の組織グループのマッピングが可能となります。この情報は、特定の組織グループの売上や利益などの計算、または組織グループごとのパフォーマンス比較などに利用できます。

次に続きます。


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