如何解决Google BigQuery Dimensions SQL 多网格
您将如何在下面的示例中选择多个网格,而不是在“WHERE”下只选择一个:
SELECT
sdg_code,sdg_name,"grid.5170.3" as grid,year,COUNT(DISTINCT id) as pubs,ROUND(AVG(fcr),1) as fcr,ROUND(EXP(AVG(LOG(GREATEST(fcr,1)))),1) as fcr_geomean,ROUND(sum(AltWithScore),1) as altmetric
FROM
(
SELECT
p.id,if(p.altmetrics.score > 0,1,0) as AltWithScore,cat_sdg.code as sdg_code,cat_sdg.name as sdg_name,p.metrics.field_citation_ratio as fcr,p.altmetrics.score as altmetric_score,row_number() over(partition by p.id,cat_sdg.code) as rn
FROM
dimensions - ai.data_analytics.publications p,UNNEST(category_sdg.full) cat_sdg
WHERE
year >= 2011
AND year <= 2020
AND "grid.5170.3" in UNNEST(research_orgs)
)
WHERE rn = 1
GROUP BY
sdg_code,year
ORDER BY year asc
需要改变的地方:
它目前只为 1 个组织 (GRID) 运行,我希望它为 11 个组织运行。 该组织使用名为“GRID”的 ID 进行标识,如下所示: “grid.5170.3”
我希望我的新代码多占用 10 个组织 ID。需要用到这10个: grid.5254.6、grid.7048.b、grid.5117.2、grid.10825.3e、grid.4655.2、grid.11702.35、grid.154185.c、grid.475435.4、grid.7143.1、grid.27530。
并添加一个带有组织名称的列;目前只有一个包含组织的列。
谢谢,这一切都是新手。
解决方法
使用下面的 WHERE year >= 2011 AND year <= 2020 AND "grid.5170.3" in UNNEST(research_orgs)
代替
WHERE year >= 2011 AND year <= 2020
AND EXISTS (
SELECT 1
FROM UNNEST(research_orgs) grid
WHERE grid IN ('grid.5170.3','grid.5254.6','grid.7048.b','grid.5117.2','grid.10825.3e','grid.4655.2','grid.11702.35','grid.154185.c','grid.475435.4','grid.7143.1','grid.27530.33')
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。