相关疑难解决方法(0)

使用 bigquery 将字符串拆分为多列

我在 BigQuery 中有一个包含数百万行的表,我想将 adx_catg_id 列拆分为多个新列。请注意,adx_catg_id 列包含由空格分隔的任意数量的单词。

如果字符串仅包含少于五个单词,则下面的查询示例可以将 adx_catg_id 拆分为多列。我可以扩展它以支持更多的单词,但我需要自动化它。

SELECT
  TS, str0, str2, str4, str6, str7
  from
  (select REGEXP_EXTRACT(str5, r'^(.*) .*') as str7
  from
  (select SUBSTR (str5, LENGTH(REGEXP_EXTRACT(str5, r'^(.*) .*')) + 2, LENGTH(str5)) as str6
  from
  (select REGEXP_EXTRACT(str3, r'^(.*) .*') as str5
  from
  (select SUBSTR (str3, LENGTH(REGEXP_EXTRACT(str3, r'^(.*) .*')) + 2, LENGTH(str3)) as str4
  from
  (select REGEXP_EXTRACT(str1, r'^(.*) .*') as str3
  from
  (select SUBSTR (str1, LENGTH(REGEXP_EXTRACT(str1, r'^(.*) .*')) + 2, LENGTH(str1)) as str2
  from
  (select REGEXP_EXTRACT(TS, r'^(.*) .*') as str1 …
Run Code Online (Sandbox Code Playgroud)

regex sql string google-bigquery

3
推荐指数
1
解决办法
1万
查看次数

BigQuery:SPLIT()中的错误返回

我在BigQuery中有一个表TabA,它有一列ColA,ColA列有以下结构

1038627|21514184
Run Code Online (Sandbox Code Playgroud)

而TabA表有超过一百万条记录.我用来分成多列

SELECT ColA,FIRST(SPLIT(ColA, '/')) part1,
       NTH(2, SPLIT(ColA, '/')) part2
FROM TabA
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,在某些行之后,拆分似乎无法正常工作.

我们得到这样的记录,

     ColA            part1   part2
1038627|21507470    1038627 21507470     
1038627|21534857    1038627 21507470     
1038627|21546455    1038627 21507470     
1038627|21577167    1038627 21507470
Run Code Online (Sandbox Code Playgroud)

It his happening on a random basis. Not sure where is there error.

SELECT COUNT(*) FROM TabA - returns say 1.7M records


SELECT ColA,FIRST(SPLIT(ColA, '|')) part1, NTH(2, SPLIT(ColA, '|')) part2 FROM TabA - returns 1.7M records with the wrong split


SELECT FIRST(SPLIT(ColA, '|')) part1, NTH(2, SPLIT(ColA, '|')) part2 …

sql google-bigquery legacy-sql

1
推荐指数
1
解决办法
986
查看次数

标签 统计

google-bigquery ×2

sql ×2

legacy-sql ×1

regex ×1

string ×1