google-cloud-platform - Google Bigquery:如果其中一个为空,则两个外部表的联接将失败
问题描述
我在 BiqQuery 中有 2 个外部表,它们是在 Google Cloud Storage 上的 JSON 文件之上创建的。第一个是事实表,第二个是错误数据——它可能为空,也可能不为空。
- 我可以单独查询每个表就好了,甚至是一个空表 - 这是一个 空表查询结果示例
- 如果他们都不是空的,我也可以离开加入他们。
但是,如果错误表为空,我的查询将失败并出现以下错误:
查询指定了一个或多个联合数据源,但并未扫描所有这些数据源。它通常表示不正确的 uri 规范或对联合数据源联合的“限制”子句,无需读取所有源即可满足。
文档中的任何地方都没有涵盖这种情况,并且与此版本控制问题无关 -在 Dataflow 中将 BigQuery 联合表作为源读取会引发错误
我宁愿避免将这些表中的任何一个转换为本机,因为它们仅在 ETL 过程的一个步骤中使用,并且这些数据随后会被删除。其中一个是空的看起来并不像特殊情况,因为普通选择工作得很好。
是否有一些解决方法?
UPD:向 Google 提出问题,等待回复 - https://issuetracker.google.com/issues/145230326
解决方案
感觉是个bug。一种解决方法是使用脚本来避免查询空表:
DECLARE is_external_table_empty BOOL DEFAULT
(SELECT 0 = (SELECT COUNT(*) FROM your_external_table));
-- do things differently when is_external_table_empty is true
IF is_external_table_empty = true
THEN ...
ELSE ...
END IF
推荐阅读
- java - 不首先在 Android 的 NextPageToken Youtube API3 中加载最新视频
- .htaccess - HTACCESS 重写的 URL 正在重定向查询参数
- python - 在热图轴上进行注释
- java - 程序跳过'if'语句并默认为'else'
- sass - Sass vs Scss - 我应该如何搜索 SASS?
- xml - 如何指定 xslt 所针对的 xml 文件的命名空间?
- python - Django过滤多个数组列表值
- javascript - 如何将我的 JavaScript 函数链接到 HTML 元素?
- sql-server - 强制 Excel 使用 SQL 查询运行宏
- postgresql - psql:致命:“用户名”角色不可用