写入表的 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)