有没有办法删除 BigQuery 中字符串数组中的字符?
Is there a way to remove characters in an array of string in BigQuery?
在 Google 查询中使用 GDELT public 数据库,我试图找到 2015 年 3 月 3 日左右与以色列总理本雅明·内塔尼亚胡相关的热门主题。
我使用了以下 SQL 查询
SELECT theme, COUNT(*) as count
FROM (
select REGEXP_REPLACE(SPLIT(V2Themes,';'), r',.*', '') theme
from `gdelt-bq.gdeltv2.gkg`
where DATE>20150302000000 and DATE < 20150304000000 and V2Persons like '%Netanyahu%'
)
group by theme
ORDER BY 2 DESC
LIMIT 300
拆分是必要的,因为 V2Themes 列使用嵌套列表。然后我想删除字符偏移量。这应该给我以下内容:
Row theme count
1 GENERAL_GOVERNMENT 33677
2 LEADER 33405
3 TAX_FNCACT_MINISTER 31174
4 .... ...
但是我得到了一个错误:
No matching signature for function REGEXP_REPLACE for argument types: ARRAY<STRING>, STRING, STRING.
我知道 SPLIT() 创建了一个字符串数组,但我不知道如何解决这个问题。
我应该使用其他功能吗,或者可以通过其他方式解决这个问题吗?
*编辑
当它是 运行 和 Legacy SQL 时查询有效(还需要将引号更改为方括号)。我怎样才能使用标准 SQL 达到同样的效果?
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT theme, COUNT(*) AS COUNT
FROM (
SELECT REGEXP_REPLACE(value, r',.*', '') theme
FROM `gdelt-bq.gdeltv2.gkg`, UNNEST(SPLIT(V2Themes,';')) value
WHERE DATE>20150302000000 AND DATE < 20150304000000
AND V2Persons LIKE '%Netanyahu%'
)
GROUP BY theme
ORDER BY 2 DESC
LIMIT 300
注意以下几点:当您 运行 查询失败时 - 您的成本为零(在大多数情况下)。
如果您的查询正确(如本回答中的上述查询),则不会出现这种情况 - 在这种情况下,查询将成功完成,您将按照
收费
经典 UI:
或在 BigQuery 控制台中:
在 Google 查询中使用 GDELT public 数据库,我试图找到 2015 年 3 月 3 日左右与以色列总理本雅明·内塔尼亚胡相关的热门主题。
我使用了以下 SQL 查询
SELECT theme, COUNT(*) as count
FROM (
select REGEXP_REPLACE(SPLIT(V2Themes,';'), r',.*', '') theme
from `gdelt-bq.gdeltv2.gkg`
where DATE>20150302000000 and DATE < 20150304000000 and V2Persons like '%Netanyahu%'
)
group by theme
ORDER BY 2 DESC
LIMIT 300
拆分是必要的,因为 V2Themes 列使用嵌套列表。然后我想删除字符偏移量。这应该给我以下内容:
Row theme count
1 GENERAL_GOVERNMENT 33677
2 LEADER 33405
3 TAX_FNCACT_MINISTER 31174
4 .... ...
但是我得到了一个错误:
No matching signature for function REGEXP_REPLACE for argument types: ARRAY<STRING>, STRING, STRING.
我知道 SPLIT() 创建了一个字符串数组,但我不知道如何解决这个问题。
我应该使用其他功能吗,或者可以通过其他方式解决这个问题吗?
*编辑
当它是 运行 和 Legacy SQL 时查询有效(还需要将引号更改为方括号)。我怎样才能使用标准 SQL 达到同样的效果?
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT theme, COUNT(*) AS COUNT
FROM (
SELECT REGEXP_REPLACE(value, r',.*', '') theme
FROM `gdelt-bq.gdeltv2.gkg`, UNNEST(SPLIT(V2Themes,';')) value
WHERE DATE>20150302000000 AND DATE < 20150304000000
AND V2Persons LIKE '%Netanyahu%'
)
GROUP BY theme
ORDER BY 2 DESC
LIMIT 300
注意以下几点:当您 运行 查询失败时 - 您的成本为零(在大多数情况下)。
如果您的查询正确(如本回答中的上述查询),则不会出现这种情况 - 在这种情况下,查询将成功完成,您将按照
收费经典 UI:
或在 BigQuery 控制台中: