Looker Studioで表示データを閲覧ユーザに応じて制御する方法

記事タイトルとURLをコピーする

G-gen の齊間です。Looker Studio で作成したレポートにおいて、閲覧ユーザーに応じて表示するデータを制御したい(出し分けたい)場合があります。当記事では、そのための主要な3つの方法と、それぞれの設定手順や注意点を解説します。

概要

Looker Studio で閲覧ユーザーごとに表示データを制御する方法として、主に以下の3つがあります。

  1. メールアドレスでフィルタ
  2. BigQuery で行レベルのアクセスポリシーを設定
  3. カスタムクエリでパラメータを使用

それぞれの方法について、設定方法と特徴を解説します。

手法1. メールアドレスでフィルタ

データソースの設定にある「メールアドレスでフィルタ」機能を使用する方法です。詳細な手順は、以下の記事を参照してください。

blog.g-gen.co.jp

この方法は、Looker Studio の標準機能だけで完結するため、最も簡単に設定できる点がメリットです。

一方で、1レコードにつき1つのメールアドレスしか制御に使用できない点がデメリットです。 例えば、レコード A を「ユーザー X」と「ユーザー Y」の両方に表示させたい場合、データソース側でレコード A を2行作成し、メールアドレスを格納するカラムにそれぞれのアドレスを登録する必要があります。

メールアドレスを格納しているカラムに複数アドレス登録している場合、表示されない

複数アドレスに閲覧させたい場合、メールアドレスごとにレコード作成する必要がある

複数ユーザーに同一レコードを表示させたい場合や、より柔軟な権限管理を行いたい場合は、後述する手法2または手法3を検討します。

手法2. BigQuery で行レベルのアクセスポリシーを設定

概要

データソースに BigQuery を使用している場合に利用できる方法です。BigQuery 側で CREATE ROW ACCESS POLICY 文を使用し、行レベルのアクセスポリシー(Row-Level Security)を設定します。

この機能では、許可対象として個人のメールアドレスだけでなく、Google グループも指定できます。

行レベルのアクセスポリシーについては、以下の記事を参照してください。

blog.g-gen.co.jp

手順

この方法を用いて、Looker Studio のログインユーザーに応じたデータ制御を行う手順は以下のとおりです。

1. カラムの作成

Looker Studio で参照する BigQuery テーブルに、閲覧を許可するメールアドレス(または Google グループ)を格納するカラムを作成します。このとき、1レコードに対して複数の閲覧許可ユーザーを設定する場合は、カラムのデータ型は STRING の配列(ARRAY とすることで、1レコードに対して複数データを登録できます。

STRING の配列(ARRAY<STRING>)の場合、1レコードに複数データ登録可能

BigQuery の STRING の配列(ARRAY<STRING>)については、以下の記事を参照してください。

blog.g-gen.co.jp

2. 行レベルのアクセスポリシーの設定

BigQuery の対象テーブルに対し、行レベルのアクセスポリシーを設定します。

CREATE ROW ACCESS POLICY 文で設定

3. Looker Studio データソースへの認証情報設定

Looker Studio のデータソース設定において、データの認証情報を閲覧者の認証情報に設定します。オーナーの認証情報のままでは、閲覧ユーザーごとの制御が効かないため、注意してください。

データソース編集画面にて、データの認証情報を「閲覧者」に設定

BigQuery テーブルの STRING の配列( ARRAY<STRING> )をLooker Studio レポートで参照する際は、カスタムクエリで ARRAY_TO_STRING 関数を利用し、配列を文字列に変換します。

STRING の配列を参照する場合、ARRAY_TO_STRING 関数で文字列に変換する

4. 動作確認

Looker Studio レポートにアクセスすると、BigQuery 側でポリシーが評価され、ログインユーザーに応じたデータのみが表示されます。

閲覧ユーザに応じて表示データが制御される

行レベルのアクセスポリシー設定例

例えば、売上テーブル(sales_table)に対し、閲覧許可リストのカラム(allowed_viewers / ARRAY 型)に含まれるユーザーだけに表示を許可する場合のクエリは以下のとおりです。

CREATE ROW ACCESS POLICY ap_sales_filter
ON `my_project.my_dataset.sales_table`
GRANT TO ('allAuthenticatedUsers')
FILTER USING (
  SESSION_USER() IN UNNEST(allowed_viewers)
);

GRANT TO 句には、ポリシーを適用する対象(権限を制限する対象)を指定します。Looker Studio を利用するすべてのユーザーに適用するため、ここでは allAuthenticatedUsers としています(特定のグループやドメインに限定することも可能です)。

FILTER USING 句には、閲覧を許可する条件(True になる条件)を記述します。

  • SESSION_USER() : クエリを実行している(レポートを閲覧している)ユーザーのメールアドレスを取得します。

  • IN UNNEST(...) : 配列カラムを展開し、その中にユーザーのメールアドレスが含まれているかを完全一致で判定します。

LIKE 演算子などを用いた文字列の部分一致による判定は、意図しないユーザーへの権限付与につながるリスクがあるため、上記のような完全一致による判定を推奨します。

手法3. カスタムクエリでパラメータを使用

概要

こちらもデータソースに BigQuery を使用している場合に可能な方法です。 データソース設定のカスタムクエリ内で、閲覧ユーザーのメールアドレスをパラメータとして動的に指定します。

手順

手順は以下のとおりです。

1. カスタムクエリの定義

Looker Studio のデータソース設定で、カスタムクエリを定義します。

  • パラメータ設定で「閲覧者のメールアドレスパラメータ」を有効化
  • カスタムクエリの WHERE 句で、閲覧者のメールアドレスパラメータ(@DS_USER_EMAIL)を使用した条件を記述

@DS_USER_EMAIL をWHERE句で指定する

2. 動作確認

Looker Studio レポートにアクセスすると、パラメータにログインユーザーのメールアドレスが渡され、それに応じたクエリ結果が表示されます。

閲覧ユーザに応じて表示データが制御される

齊間 陽史(記事一覧)

開発部プロジェクトマネジメント課

狩猟免許を持つ ハンター兼 IT エンジニア。2025年7月より、G-genにジョイン。前職は SIerで DX化案件を数多く担当。平日はデジタルの世界で、休日は山で奮闘中。