BigQuery上のテーブルで日本語カラムが使われていた際にLookMLの定義ができるか確認してみた

BigQuery上のテーブルで日本語カラムが使われていた際にLookMLの定義ができるか確認してみた

2025.08.12

さがらです。

BigQuery上のテーブルで日本語カラムが使われていた際にLookMLの定義ができるか確認してみたので、その内容をまとめてみます。

事前準備

以下のクエリを実行して、日本語カラムを持つviewを定義します。※sagara-satoshi.citibike.tripsは、自分の検証用のテーブルです。

CREATE OR REPLACE VIEW `sagara-satoshi.citibike.trips_jp_view` AS
SELECT
  tripduration AS `利用時間_秒`,
  starttime AS `開始時刻`,
  stoptime AS `終了時刻`,
  start_station_id AS `開始ステーションID`,
  start_station_name AS `開始ステーション名`,
  start_station_latitude AS `開始ステーション緯度`,
  start_station_longitude AS `開始ステーション経度`,
  end_station_id AS `終了ステーションID`,
  end_station_name AS `終了ステーション名`,
  end_station_latitude AS `終了ステーション緯度`,
  end_station_longitude AS `終了ステーション経度`,
  bikeid AS `自転車ID`,
  usertype AS `ユーザータイプ`,
  birth_year AS `誕生年`,
  gender AS `性別`,
  customer_plan AS `顧客プラン`
FROM
  `sagara-satoshi.citibike.trips`;

このviewに対してクエリをすると下図のように結果が返ってきます。

2025-08-12_07h52_55

Lookerのviewの定義

先ほど作成したviewに対して、LookerのCreate View From Tableを使って、LookMLのviewが作成できるか確認してみます。

2025-08-12_07h56_00

2025-08-12_07h57_05

すると、下図のようなviewが生成されました。

sql:は正しく入っていますが、各dimensionの名称について、自動で入力されていないためこのままではエラーとなります。開始ステーションIDなどIDと半角英字が入っていたカラムは、idとだけ自動でdimension名が入力されていますね。

2025-08-12_08h01_32

このままではLooker上でviewとして利用することが出来ませんので、いくつか対策を試してみます。

対策1:dimension名に日本語カラム名をそのまま入力

まず、下図のようにdimension名に日本語カラム名をそのまま入力してみます。

2025-08-12_08h10_39

しかしこれでは、Exploreでクエリを実行しようとしたときにエラーとなります。

2025-08-12_08h11_06

対策2:dimension名の日本語カラム名をバッククォートで囲ってみる

次は、バッククォートで日本語カラム名を囲った場合にどうなるか見てみます。

2025-08-12_08h14_17

しかし、Exploreでクエリを実行しようとしたときにエラーとなりました。

2025-08-12_08h15_24

対策3:dimension名は半角英数字、labelで日本語カラム名を追加する

日本語カラム名をdimensionに直接記すのは難しいとわかったので、dimension名は半角英数字、labelで日本語カラム名を追加する方法で試してみます。

2025-08-12_08h22_05

この場合は、うまくExploreでクエリが実行できました!

2025-08-12_08h23_04

参考として、実際にうまくExploreでクエリが実行できた際のLookMLのview定義を以下に記載しておきます。

view: trips_jp_view {
  sql_table_name: `sagara-satoshi.citibike.trips_jp_view` ;;

  dimension: start_station_id {
    label: "開始ステーションID"
    primary_key: yes
    type: number
    sql: ${TABLE}.`開始ステーションID` ;;
  }

  dimension_group: starttime {
    label: "開始時刻"
    type: time
    timeframes: [raw, time, date, week, month, quarter, year]
    datatype: datetime
    sql: ${TABLE}.`開始時刻` ;;
  }

  dimension: customer_plan {
    label: "顧客プラン"
    type: string
    sql: ${TABLE}.`顧客プラン` ;;
  }

  dimension: start_station_name {
    label: "開始ステーション名"
    type: string
    sql: ${TABLE}.`開始ステーション名` ;;
  }

  dimension: start_station_longitude {
    label: "開始ステーション経度"
    type: number
    sql: ${TABLE}.`開始ステーション経度` ;;
  }

  dimension: start_station_latitude {
    label: "開始ステーション緯度"
    type: number
    sql: ${TABLE}.`開始ステーション緯度` ;;
  }

  dimension: usertype {
    label: "ユーザータイプ"
    type: string
    sql: ${TABLE}.`ユーザータイプ` ;;
  }

  dimension: end_station_name {
    label: "終了ステーション名"
    type: string
    sql: ${TABLE}.`終了ステーション名` ;;
  }

  dimension: end_station_longitude {
    label: "終了ステーション経度"
    type: number
    sql: ${TABLE}.`終了ステーション経度` ;;
  }

  dimension: end_station_latitude {
    label: "終了ステーション緯度"
    type: number
    sql: ${TABLE}.`終了ステーション緯度` ;;
  }

  dimension: gender {
    label: "性別"
    type: string
    sql: ${TABLE}.`性別` ;;
  }

  dimension: birth_year {
    label: "誕生年"
    type: number
    sql: ${TABLE}.`誕生年` ;;
  }

  dimension_group: stoptime {
    label: "終了時刻"
    type: time
    timeframes: [raw, time, date, week, month, quarter, year]
    datatype: datetime
    sql: ${TABLE}.`終了時刻` ;;
  }

  dimension: tripduration {
    label: "利用時間_秒"
    type: number
    sql: ${TABLE}.`利用時間_秒` ;;
  }

  dimension: end_station_id {
    label: "終了ステーションID"
    type: number
    sql: ${TABLE}.`終了ステーションID` ;;
  }

  dimension: bikeid {
    label: "自転車ID"
    type: number
    sql: ${TABLE}.`自転車ID` ;;
  }

  measure: count {
    type: count
  }
}

最後に

BigQuery上のテーブルで日本語カラムが使われていた際にLookMLの定義ができるか確認してみました。

結果として、日本語カラム名をそのままdimensionの定義に入れることはできないため、dimension名は半角英数字にしてlabelで日本語表記が必要ということがわかりました。Lookerで利用する場合には参照先のテーブルのカラム名は半角英数字の方が、viewの定義がスムーズに行えますね!

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.