[Looker小ネタ] 複数メジャーをOR条件でフィルタリングする #looker

2022.09.01

Lookerで分析をしていて、複数のメジャーをOR条件でフィルターをかけて計算したいことがあると思います。

ですが、Exploreのデフォルトのフィルター機能の場合、項目を追加したら裏側のSQLではand条件で生成されます。

総売上メジャー100ドル以上、もしくは平均商品別粗利率メジャー10%以上のどちらかを満たしている結果を表示させたいのですが、上の図のデフォルトのやり方では総売上メジャー100ドル以上、かつ平均商品別粗利率メジャー10%以上のどちらも満たす結果が表示されてしまいます。

そこで、使用するのがyesnoタイプのメジャーです。

(元ネタ:How do I make OR filters when using Filters on Measures? (Community)

LookMLでやることは、OR条件で表示したいメジャーとその表示条件をsqlパラメータで記述するだけです!

measure: can_be_plotted {
  type: yesno
  sql: ${total_sale_price} > 100 OR ${total_gross_margin_percentage} > 0.1;;
}

次にExplore画面でタイプyesnoメジャーをフィルターで指定すればOR条件でhaving句が生成されます!

じゃじゃーん!

まとめ

正直メジャーのyesnoタイプってなんのために存在しているのかずーーっと謎だったのですが、これでLooker七不思議のうちの一つを解決することができました。

このやり方だとフィルター対象のメジャーや値が固定になってしまうので、次はExplore側で指定したメジャーや値を指定することができないかを試してみます!