🔖

LookerのCIツールであるSpectaclesを導入した話

2021/12/10に公開

この記事はLooker Advent Caledar 2021 11日目の記事となります。

Spectaclesとは?

https://www.spectacles.dev/

LookerのCIツールで、以下の3つを行うことができます。

  1. SQLのチェック
  2. Contents Validation
  3. データテスト

2,3はLookerのコンソール上からもできますが、Spectaclesを使うとPull Requestをトリガにしたり、定期的に実行することができます。また、LookerではできないSQLのチェックも行ってくれる、という点が導入に至った大きなポイントになります。

SQLチェック

チェック対象のExploreからすべてのdimensionを利用してSQLチェックを行っています。
以下のページにも記載されていますが、LIMIT 0, WHERE 1=2をつけているのでBQのスキャンのコストはかかりません
https://docs.spectacles.dev/app/explanation/limiting-resource-consumption

Spectacles導入前の開発フローと課題

Spectacles導入前の開発フローは以下のようになっていました。

Lookerのstagingインスタンスを契約していて、masterブランチにマージされるとstagingインスタンスへ、productionブランチにマージされるとproductionのインスタンスにLookMLがデプロイされます

課題として、Looker IDEはコミットのまとめができない、かつ、CLIでまとめたコミットをIDE上に取り込む(reset hardできない)のが簡単ではなく、masterへマージ後に再度LookMLのバリデーションとデータテストを実施していました。本来であれば、コミットをまとめた状態のLookMLをmasterにマージする前にバリデーションやデータテストができるとよいです。

Spectaclesの設定について

以下のようにSpectaclesを設定しています

  • on Pull Request
    • SQLチェック
    • データテスト
  • Daily
    • Contents Validator

PRではgithub上で以下のようになり、passしないとマージできないようになっています。

Spectaclesを導入してみて

  • コミットのたびにSpectacles上でデータテスト、SQLチェックを行ってくれるので手間が減った
  • Contents Validatorも定期的に実行しエラーが発生した場合にSlackに通知できるのでよりタイムリーにエラーを検知できるようになった
  • とはいえ、Lookerの標準機能として提供してくれてもいいのかなと思ったりもする

Discussion