【Metabase】Slack通知を「%」で表示する
¡Hola! 業務でMetabaseを活用しているマイコです。
ダッシュボードのSubscription機能を使ったSlack通知がとても便利です。Zapier経由せずともMetabaseから直接Slackに飛ばせます。
そんな便利なMetabaseのSlack通知ですが、ダッシュボードで「%」表示しているものもSlack上では小数点になってしまいます😢。
今回は、これを%で表示させる方法について書きます。
状況:Metabaseダッシュボードでは%表示なのに、Slack上では小数点表示
おさらいですが、Metabase上のダッシュボード上で%に設定するのはStyleから設定できます。
そしてこれですが、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通知させると、無事に%で表示されるようになりました。
めでたしめでたし♪