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')
)