写入表的 228 行结果查询作业在允许大结果为 True 时给出 0 行

Posted

技术标签:

【中文标题】写入表的 228 行结果查询作业在允许大结果为 True 时给出 0 行【英文标题】:A 228 row results query job writing to table with gives 0 rows when allow large results is True 【发布时间】:2016-04-01 18:13:44 【问题描述】:

我有一个 SQL 查询,当我将结果写入未设置“允许大结果”的表时,将写入 228 行。

但是,当我设置允许大结果时,目标表将包含 0 行。两次尝试都使用写入处置 WRITE_TRUNCATE。

我使用 API 和 BigQuery 控制台都看到了这一点。

工作中不允许大量结果的工作:

eagTEiR0wSMK6b5WLSL04vB9RfTUb8bhvEi1YFWjuhfaF_W0zEeLogxUYwOrhGyOheS_CyyaB1dUeafGPdyR592xMcbeEmpJ85_CO29PSbBAnmEBGHJVHWjpH5DvGyVCEjarfJ5XUQ9UmVT_FSHmkcEZktbfln9E_E1jobM65IuQv2sP4_r7eqK60aPaqxD7taEc1bpM2kS6GAtkxqFsUUOv_JXQgTn3ebCodHFKsdquhy3e1mfbu4QhqnoO5QCi P>

不工作的allow-large-results作业:

G40HW4Z5zGTgL1NSCBBy380kY7Gu7WOU7s_zB9F8Kdrtao2gbzRLptWSSi76MC2gHCHPG0srssaGejfCIN4j1upjyh9vQnA3kPmuJcgm5ZgdYd3YwsmGzvcBXiPy9bY0x0GRhJXimHqhKiYbKz7fa3LljOb4kxNvB8wPazqeYj3xAXwbV8G2Sl3L6gmutvvYPalhd1CCtUbLfiw520_I4zKDgn7LYosyFjA0h9TwR8GQ80Scd5n8yKAsIEou7XDG P>

查询:

SELECT t1.email, MIN(t1.min_created_time), GROUP_CONCAT(t1.id)
FROM (
  SELECT email, MIN(created) as min_created_time, id
  FROM TABLE_QUERY([xxxxx], 'table_id in       ("yyyyyy_201601", "yyyyyy_201602",     "yyyyyy _201603", "yyyyyy_201604")')
WHERE created >= "2016-01-11 00:00:00" AND created < "2016-04-01    00:00:00" AND id != "null" AND name LIKE "%trike%"
  GROUP BY email, id
   ) t1

GROUP EACH BY t1.email     
IGNORE CASE

另请注意,更简单的 SQL 适用于这两种情况,例如:

select email from xxxx group by email limit 100

【问题讨论】:

【参考方案1】:

这似乎是由于 IGNORE CASE 造成的问题。修复正在进行中,但与此同时,您可以使用 LOWER() 调用来包装字符串比较,即

LOWER(id) != "null"
LOWER(name) LIKE "%trike%"

等等

【讨论】:

谢谢,你可能指的是***.com/questions/30441371/…?相关的 Google 问题可以追溯到 2015/1。此问题是否有预期的修复日期?在我的情况下,不会产生错误。 此外,在所有字符串比较与 IGNORE CASE 比较中使用 LOWER() 是否会在性能和计费方面产生成本? 在性能或计费上没有区别,IGNORE CASE 只是一种方便,虽然它很脆弱,因为它不允许查询组合。您提到的另一个问题是相关的,但不一样。我预计修复将在几周内上线。

以上是关于写入表的 228 行结果查询作业在允许大结果为 True 时给出 0 行的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:写入查询结果时使用 bigquery 作业的意外行为

通过 Google BigQuery API 将查询结果导出为 JSON

Select * 的行计数结果 MISMATCH 和大文件的 Hive 外部表的 Select count(1)

mysql怎么指定查询一张表的查询结果,如最后5行记录和最前5行记录

在流分析查询中将已知属性从记录提升到***结果

SQL 多表查询