見出し画像

【Metabase】Slack通知を「%」で表示する

¡Hola! 業務でMetabaseを活用しているマイコです。
ダッシュボードのSubscription機能を使ったSlack通知がとても便利です。Zapier経由せずともMetabaseから直接Slackに飛ばせます。

そんな便利なMetabaseのSlack通知ですが、ダッシュボードで「%」表示しているものもSlack上では小数点になってしまいます😢。
今回は、これを%で表示させる方法について書きます。

状況:Metabaseダッシュボードでは%表示なのに、Slack上では小数点表示

おさらいですが、Metabase上のダッシュボード上で%に設定するのはStyleから設定できます。

ダッシュボードで%表示にする

そしてこれですが、Slackで通知すると小数点になってしまいます。

Slack通知

このままでも困らないといえば困らないのですが、同僚から「%で表示したい」という要望を受けたので、解決してみました。

解決方法

ダッシュボードや通知方法ではなく、SQLの方に手を加えることで解決しました。
具体的には次の3段階で小数点を%表記に変換します。
①計算結果を100倍する
②roud関数で四捨五入する
③concat関数で数字と%を連結

例えば、次のクエリでstatusが'active'なユーザの割合を出すとします。

SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) / COUNT(*)
FROM users

このクエリを次のように変更します。

concat(round(sum(case when status = 'active' then 1 else 0 end) / count(*)) *100, 2),'%')

①100倍:元の「sum(case when status = 'active' then 1 else 0 end) / count(*)」を「*100」で100倍します。
②round関数で四捨五入:round(①,2)として、四捨五入して小数点第2位まで表示させます(小数点第3位で四捨五入する)。
③concat関数で文字列連結:concat(②,'%')で最後に%を表示させます。

このクエリを実行すると、計算結果が%表示になります。
これをSlack通知させると、無事に%で表示されるようになりました。

めでたしめでたし♪

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