データチームでアナリティクスエンジニアをしているucchi-です。Adsという広告ネットワークのデータ周りを開発しています。Adsで採用している、Lookerの埋め込みダッシュボードについて紹介します。はじめにピクシブでは全社的にLookerを使用しています。Lookerを使うことで、BigQueryに保存されている品質の高いデータを気軽に分析することができ、社内の仮説検証や意思決定に役立っています。一方で、Lookerは社内の分析用途だけではなく、社外へのデータ提供にも活用できます。Adsでは、「シングルサインオン(SSO)組み込み」という形式で、クライアント向けの広告管理画面にLookerのダッシュボードを埋め込んでいます。これにより、クライアントは管理画面経由で、BigQueryにあるデータを直接参照できます。広告配信実績を、好きなタイミングで、多様な切り口で、分析することができます。埋め込みダッシュボードを利用することには開発目線でもメリットがあります。Lookerの機能を活かすことで、複雑なダッシュボード要件を素早く満たし、アプリケーションの機能開発速度を高めることができます。埋め込みダッシュボードをクライアントへ提供するには、乗り越えなければならない壁がいくつか存在します。Adsが提供する埋め込みダッシュボードにおける課題と、その解決策を紹介します。→本番をLookML、開発をユーザー定義ダッシュボードに。LookerAPIで状態を自動で同期LAMSを用いたデータ品質の担保まず、データ品質の担保についてです。Lookerが提供するValidatorは、基本的な文法エラーを自動で検知してくれますが、テーブル結合におけるキー指定やリレーションの誤りといったよくある設定ミスを検知してくれません。これらの誤設定は、結果としてファントラップ(テーブルの結合ミスによるファクトの重複集計)などの集計ミスを引き起こしてしまいます。Adsの場合は、クライアントの広告出稿金額など、1円のずれも許されないデータを提供する必要があります。一般的な社内向けのダッシュボードと比べて求められるデータ品質が極めて高いので、品質をさらに高めるための工夫が必要です。そこで、LAMSというLookerのLinterを導入することで、これらの誤設定を出来る限り未然に防ぐようにしました。便利だと感じたのはK1とE2というルールです。Keyの設定を強制します。}}そして、E2で、1対1もしくは1対多における”1”のテーブルをPKで結合するよう強制します。}}全てのテーブルにPKが存在し、常にPKを用いて結合することにより、ファントラップの発生をある程度防ぐことができます。普段からPKを意識したviewの定義を行うことで、誤ったkeyの定義や結合を減らすことができます。LAMSによるlintチェックLAMSは.gitlab-ci.ymlの中にstageとして定義します。LAMSのチェックが通った場合のみ、masterへのマージが可能になります。次に、クライアント毎に参照可能なデータ範囲の制御についてです。クライアントがダッシュボードを操作する上で、競合するクライアントの広告の配信状況が見えてしまうことは絶対にあってはなりません。開発環境のクライアントは、本番環境ではなく開発環境の広告配信サーバーによる広告配信実績が見えるべきです。そこで、user_attributesを使って、Lookerを閲覧するユーザー属性に応じて参照可能なデータ範囲を制御します。ユーザーIDに基づく絞り込み埋め込みダッシュボードでは、クライアントがダッシュボードを初めて開くタイミングで、Lookerのアカウントが発行されます。AdsのユーザーIDの値を、発行されたLookerアカウントに”user_id”属性として付与し、その値に応じてアクセスフィルターを適用します。}}すると、ダッシュボード上で集計が行われる前に、ユーザーIDに基づいてデータが絞り込まれるので、他のクライアントのデータが見えてしまうのを防ぐことができます。いった環境情報を、Lookerアカウントに”environment”属性として付与し、その値に応じてviewが参照するBigQueryのテーブルを動的に切り替えます。%};;}これにより、データソースが本番環境と開発環境のどちらを向いているかを意識せずとも、ダッシュボードの開発を行えます。最後に、ダッシュボードの開発環境の分離についてです。開発環境用にダッシュボードを分ける必要があるか本番環境の広告管理画面は、特定のLookMLダッシュボードを参照しています。Mode)があります。これをオンにすると、ダッシュボードのLookMLに改修を加えた結果を、開発者自身が手元で事前に検証することができます。開発環境の管理画面に、開発モードのダッシュボードを埋め込むことはできません。ステークホルダーが手元で開発環境の管理画面に入り、開発中の埋め込みダッシュボードを触ってレビューするためには、開発環境用に異なるダッシュボードを作成する必要があります。Adsでは開発環境の管理画面に、本番環境用のLookMLをコピーしたユーザー定義ダッシュボードを埋め込んでいます。ダッシュボードのコピーはLookerAPIを用いて行います。LookMLダッシュボードの状態を、対応するユーザー定義ダッシュボードに同期します。Adsでは、MRをmasterにマージする際に状態を同期します。ダッシュボードの見た目を改修しながらLookMLファイルを変更したい場合もあるので、同期処理は手動で実行します。開発環境用のダッシュボードをユーザー定義とすることで、GUIを用いた見た目の試行錯誤を簡単に行えます。ダッシュボードが分かれているので、本番環境に影響が波及することはありません。試行錯誤が終われば、改修後のダッシュボードをLookML形式で吐き出して、本番環境用のLookMLダッシュボードに変更を反映させます。専用のダッシュボードを1から作るのではなく、Lookerの埋め込みダッシュボードを提供したことで、開発期間を2ヶ月以上短縮し、(当時は)専任のフロントエンジニアがいないにも関わらずクライアントに価値を提供できました。現在では100名以上のクライアントがこのダッシュボードを利用しています。Lookerはダッシュボード要件の変更耐性が高いので、広告管理システムの機能追加を素早く行えています。Adsの規模感や開発体制を踏まえると、十分な役割を果たしていると評価しています。ucchi-アド・プロダクト部のデータチームでアナリティクスエンジニアとして働いています。百合とデータ分析と美味しいご飯が趣味。MEETUP2024-10-30pixivというシステムはどんな形をしているのか、それはなぜか。insideは、ピクシブ株式会社が運営するオウンドメディアです。Reserved.引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。