【问题标题】:Google BigQuery Dimensions SQL Multiple GridsGoogle BigQuery 维度 SQL 多个网格
【发布时间】:2021-06-05 19:59:30
【问题描述】:

如何在下面的示例中选择多个网格,而不是在“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,
            year,
            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,
    sdg_name,
    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.33

并添加一个带有组织名称的列;目前只有一个与组织有关的列。

谢谢,对这一切都是新手。

【问题讨论】:

  • 不清楚你在寻找什么逻辑。提供一些示例以及预期的输出 - 或者至少更具体地说明所需的逻辑
  • 嗨,刚刚用我尝试过但失败的例子更新了我的问题,也许他们会更好地解释我想要做什么。
  • 显然,这些都不是工作示例。但请提供有关您正在寻找的逻辑的更多详细信息。两个网格都需要在记录中才能获得资格吗?还是两者中的任何一个?
  • 两者。有 11 个不同的网格,我希望它们都出现在输出结果中。
  • 仍然不清楚 - 请阅读我的第一条评论

标签: sql google-bigquery grid dimensions


【解决方案1】:

下面用WHERE year &gt;= 2011 AND year &lt;= 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')
)

【讨论】:

  • "grid.5170.3" as grid," 部分怎么样?就这样吧?
  • 您应该将您需要的所有网格都包含在该列表中 - 所以如果我错过了,只需将其添加到列表中:o) - 我刚刚将其添加到答案中:o)
  • 所以只需将它添加到一个数组中,例如“grid.5170.3,grid.5254.6,等等”作为sdg_name下的网格?这就是我的意思。在代码的顶部。它只列出了 grid.5170.3 而没有其他的。
  • 我回答了您非常原始的问题,该问题的重点是 where 子句的问题以及如何扩展它以使用多个网格 - "grid.5170.3" in UNNEST(research_orgs)。然后你完全改变了这个问题,现在它比最初更加模棱两可 - 我建议你将这个问题回滚到最初陈述的状态并发布带有这些“新”细节的新问题,以便我(我们)能够回答!当您发布新问题时 - 请provide a Minimal, Reproducible Example
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
相关资源
最近更新 更多