LoginSignup
4
1

More than 3 years have passed since last update.

BigQuery レガシーSQLのNTH関数を標準SQLで記述する

Posted at

標準SQLでNTH関数は使用できないため別の方法で解決できないか試してみた。

やりたいこと

文字列を指定の文字列ごとにSPLITし、分割した値の3つ目のみをSELECTする。

SPLIT関数はレガシーSQL同様に使用可能

テストデータを作成する。

WITH TARGETRANGE AS (
    SELECT
        'aaa_bbb_ccc_ddd_eee' AS teststr
)

teststrを引数とし、delimiterにアンダースコアを指定し分割する。

SELECT
  split((select teststr from TARGETRANGE), '_')

結果
image.png
SPLIT関数の戻り値の型はARRAY。

今回は配列の3つ目のみを選択したいため、SAFE_OFFSETまたはSAFE_ORDINALで配列位置を指定する。
SAFE_OFFSET:0を始めとする
SAFE_ORDINAL:1を始めとする

SELECT
  split((select teststr from TARGETRANGE), '_')[OFFSET(2)] as a

結果
image.png

文字列cccだけを取得できた。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1