アクセス解析担当者のBigQuery日記

普段はアクセス解析やウェブ広告の運用をしています。主にBigQueryについて、記録していきます。

BigQueryでマルチカーソルを使う

想定する場面

例えば、複数のカラムでSUMをとり、カラム名として元のカラム名をそのままつけたい、
ということは、割とよくあると思います。
そういった時に、この機能が使えます。

作業イメージ


やり方

今回は、Google Analyticsのサンプルデータセットを使用します。なぜか新UIでデータセットが表示されないので、キャプチャは旧UIのものを使用します。
totals内のいくつかのカラムのSUMをとります。

なお、Google Analytics サンプルデータセットへのアクセスについては、以下を参照してください。
support.google.com

  1. まとめて集計したいカラムを書き出します。schemeタブでカラム名をクリックすると、エディタ部分にカラム名が書き出されるので、カラム名をひらすらクリックします。この時、対象のカラムが連続するように書き出しておきます。
  2. ここで一度Format Queryをします。
  3. 対象のカラムが全て書き出されたら、対象のカラムの先頭にマウスカーソルを移動します。
  4. alt を押します。すると、マウスカーソルが十字に変化します。この時マウス左ボタンを押したまま、マウスを真下に動かします。対象のカラムの最後まで移動したタイミングでマウス左ボタンを離します。これでマルチカーソル化が出来ました。
  5. あとは集計関数を書き、カラム名を元の列名にします。
    • まずはSUM( を書き、windowsならctrlmacならaltを押しながらを何度か押します。この時、通常のエディタ同様、shiftで範囲選択、ctrl + cまたはcmd + cでコピーができます。
    • カラム名の終わりまでカーソルが移動したら、SUM( を閉じるために )を書きます。またその後に続けて AS と書きます。
    • コピーしていたカラム名を、ctrl + vまたはcmd + vで貼り付けます。

完成したクエリはこちら

SELECT
  SUM(totals.visits) AS visits,
  SUM(totals.hits) AS hits,
  SUM(totals.pageviews) AS pageviews,
  SUM(totals.timeOnSite) AS timeOnSite,
  SUM(totals.bounces) AS bounces,
  SUM(totals.transactions) AS transactions,[f:id:sem-aa-bq:20181009222900g:plain]
  SUM(totals.transactionRevenue) AS transactionRevenue,
  SUM(totals.newVisits) AS newVisits,
  SUM(totals.screenviews) AS screenviews,
  SUM(totals.uniqueScreenviews) AS uniqueScreenviews,
  SUM(totals.timeOnScreen) AS timeOnScreen,
  SUM(totals.totalTransactionRevenue) AS totalTransactionRevenue,
  SUM(totals.sessionQualityDim) AS sessionQualityDim
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`

以上で、操作は完了です。