代码之家  ›  专栏  ›  技术社区  ›  eilalan

限制并不限制结果的数量-什么会起作用?

  •  0
  • eilalan  · 技术社区  · 8 年前

    运行下面的查询,我得到的输出超过10行。当我将“LIMIT 10”子句更改为“LIMIT 0”时,得到的结果为空。 从BigQuery中返回的值中提取10个结果的正确方法是什么

    SELECT
      UNIQUE(index) AS sample
    FROM
      [dataset:table]
    LIMIT 10
    

    结果是79318行。

    谢谢 埃拉兰

    1 回复  |  直到 8 年前
        1
  •  2
  •   Mikhail Berlyant    8 年前

    很可能您的表中有重复的字段,因此当您使用BigQuery遗留SQL时,它会返回10行,但在UI中,这些行被展平,重复字段中的所有元素都显示为一行,因此您会看到10多行
    要了解这一点,只需使用BigQuery标准SQL,它不会将结果展平,而是以分层方式在UI中显示结果

    所以,这取决于您需要什么—如果您需要原来的10行—您已经有了它们—它们只是在UI中为您展平了(请参见上面的解释)。如果需要展平结果中的10行,则需要 FLATTEN 首先是it

    但最好的方法是只使用BigQuery标准SQL(如果索引只是单个重复字段(不是记录)

    SELECT DISTINCT sample
    FROM `dataset.table`, UNNEST(index) sample
    LIMIT 10
    

    如果索引是重复记录,则应在该记录中指定字段(例如id)

    SELECT DISTINCT sample.id
    FROM `dataset.table`, UNNEST(index) sample
    LIMIT 10