本記事は
【Advent Calendar 2025】
25日目②の記事です。
🌟🎄
25日目①
▶▶ Merry Christmas!!
🎅🎁

はじめに
メリークリスマス! 坂本です。
僭越ですが、Advent Calendar 2025の最終日を執筆させていただきます。
※本記事はLooker Studio、BigQuery、計算フィールドに関連する記事となるため、必要に応じて下記の記事をご参照ください。
Looker Studioのデータソースで BigQueryのカスタムクエリを使用する場合の注意点 - NRIネットコムBlog
Looker StudioのデータソースにBigQueryのテーブルを使用する - NRIネットコムBlog
Looker Studio の「計算フィールド」を活用し、URLに含まれる既存の情報だけで行える応用的な分析の活用例 - NRIネットコムBlog
Looker StudioでBigQueryデータソースを設定する際、「ネイティブ関数: オフ」という項目が存在するのを目にしたことがあるかもしれません。

この「ネイティブ関数(NATIVE_DIMENSION)」は2023年10月にリリースされた機能ですが、公式ドキュメント以外の解説記事が少なく、「存在は知っているけれど、何ができるのかよく分からない」「そもそも触ったことがない」という方も多いのではないでしょうか。
実はこの機能、使い所は限定されますが「今まではカスタムクエリを書かないとできなかった処理」を計算フィールドだけで完結できる非常に強力な機能です。
Looker StudioとBigQueryを日々活用されている皆様へ、私からのささやかなクリスマスプレゼントとして、この機能をご紹介させていただきます。
ネイティブ関数(NATIVE_DIMENSION)とは
ネイティブ関数(以下 NATIVE_DIMENSION)はLooker Studioの計算フィールドで使用できる関数の1つです。
※記事執筆時点ではデータソースがBigQueryの場合のみ使用可能です。
この関数では下記の通り、計算フィールドに直接 SQLを記述できます。
構文
NATIVE_DIMENSION(expression, type)
- expression - SELECT 文の1つの列に該当する SQL を指定します。
- type - 計算フィールドの取得結果のデータ型(「STRING」「INT64」等)を指定します。使用できるデータ型の詳細はこちらをご確認ください。
例
NATIVE_DIMENSION("NET.HOST(page_location)", "STRING")
直接 SQLを記述することで柔軟なデータ取得が可能ですが、以下のような制約事項があります。
- 集計フィールドやウィンドウ関数は使用できません。
- 統合データソースでは使用できません。(統合前にNATIVE_DIMENSIONで計算フィールドを作成してから、統合でその計算フィールドを使用することは可能です)
参考)Looker Studio | Google Cloud Documentation
ユースケース
NATIVE_DIMENSIONは以下のような場合に有用です。
Looker Studio標準では対応していないBigQuery関数を使いたい場合
Looker Studioの計算フィールドでは標準で多くの関数が用意されていますが、BigQueryでは使えるけれどLooker Studioでは使えない関数が多くあります。 これまではカスタムクエリを使用する必要がありましたが、NATIVE_DIMENSIONを使えば計算フィールドで対応が可能となります。
例)
| 種別 | 関数の例 |
|---|---|
| NET関数 | NET.HOST |
| JSON関数 | JSON_VALUE |
| ハッシュ関数 | SHA256 |
UDF(ユーザー定義関数)で複雑な実装や処理の共通化をしたい場合
個人的に最大のメリットだと感じるのがこちらで、NATIVE_DIMENSIONからはBigQueryのUDF(ユーザー定義関数)を呼び出すことができます。
Looker Studioでは複数の計算フィールドで共通する処理を定義することはできないですが、UDFを使用することでそれを補うことが可能です。
またJavaScript UDFにも対応しているため、URLデコードのようなBigQueryの標準関数では対応できない処理や、複雑なロジックをJavaScriptで実装することが可能となります。
ただし、以下の点にはご注意ください。
- JavaScript UDF は通常のSQL クエリよりも多くのスロット リソースを消費し、ジョブのパフォーマンスが低下する場合があります。
参考)ユーザー定義関数 | BigQuery | Google Cloud Documentation - 一時的UDFは使用できず永続的なUDFのみ使用可能です。
計算フィールドの設定方法
それでは実際にNATIVE_DIMENSIONを使用した計算フィールドの設定をしてみます。
ネイティブ関数の有効化
NATIVE_DIMENSIONを使用する場合、データソースのネイティブ関数を有効にする必要があります。
※デフォルトでは無効になっています。
データソースの編集画面から、下記のようにネイティブ関数をオンにして保存します。

計算フィールドの作成
つづいて計算フィールドを作成します。
たとえば、NET.HOST関数で「page_location」のホスト名のみを抽出する計算フィールドを作成する場合は、以下の内容を入力します。

※数式
NATIVE_DIMENSION("NET.HOST(page_location)", "STRING")
次にディメンションに「page_location」と作成した計算フィールド「page_hostname」を指定した表を作成します。

「page_hostname」に想定通り、ホスト名(ドメイン)のみが表示されています。
JavaScript UDFを使用する場合
次にJavaScript UDFを使用して、URLデコードした「page_location」を取得する計算フィールドを作成してみます。
まずGoogle CloudブラウザコンソールのBigQueryクエリ エディタ等から下記のクエリを実行して、URLデコード処理を行う永続UDFを作成します。
※GA4の一般公開データセットにはURLエンコードされたデータが存在しないため、以降は弊社サイトのデータを使用しています。
※クエリ
CREATE OR REPLACE FUNCTION `{プロジェクト名}.{データセット名}.decodeUrl`(url STRING)
RETURNS STRING
LANGUAGE js AS r"""
return decodeURIComponent(url);
""";
つづいてLooker Studioの計算フィールド作成画面で、作成したUDF(decodeUrl)のパラメータに「page_location」を渡して実行した結果を取得するよう、以下の内容を入力します。

※数式
NATIVE_DIMENSION("`{プロジェクト名}.{データセット名}.decodeUrl`(page_location)", "STRING")
次にディメンションに「page_location」と作成した計算フィールド「decoded_page_location」を指定した表を作成します。

想定通り「decoded_page_location」にURLデコードされたデータが表示されています。
まとめ
これまで「データソースをカスタムクエリで実装する」しかなかった場面でも、このNATIVE_DIMENSIONを使えば計算フィールドだけで柔軟なデータ加工が可能になります。
一方で、運用の観点からは以下の点に注意が必要です。
保守性: ロジックがLooker Studio(データソース)とBigQuery(UDF)に分散するため、管理が複雑になる可能性があります。
パフォーマンス: Looker Studioでは(キャッシュを使用する場合等を除いて)レポート表示のたびに処理が実行されるため、データ量が多い場合はスロット消費量の増加や表示速度の低下を招く恐れがあります。
基本的な方針として、データ変換処理はデータマート(テーブル)作成の段階でETL処理として実装すべきです。
しかし、「データマートやデータソース(カスタムクエリ)の修正が難しい」「ちょっとこの処理を試したい」といったシーンでは有用になります。
ぜひ皆様の引き出しの一つとして、活用してみてください。