めも

メモ.

BigQueryでGROUP_CONCATを用いて特定のカラムをソートしてまとめてしまう

やりたいこと

id product_id buy_date
0 a 2011-11-01
1 b 2011-11-03
1 c 2011-11-02

から

id dates product_history
0 2011-11-01 a
1 2011-11-02_2011-11-03 c_b

を取得したい。

コード

SELECT 
  id,
  GROUP_CONCAT( STRING(dayofyear_index), '_') as dates,
  GROUP_CONCAT( product_name , '_') as product_history 
FROM
  ( SELECT
      DAYOFYEAR(buy_date) as dayofyear_index,
      product_id as product_name
    FROM
      [project:table_name]
    WHERE
      ...
    ORDER BY 
      dayofyear_index
  )
GROUP BY
  id
HAVING
  ...

説明

先に時系列でソートしたテーブルを作ってしまい、それをGROUP_CONCATでまとめる。

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。