我想确保在谷歌大查询连接中使用视图何时剔除/排除未使用列的表。
例如。
如果视图是
Select _fact.A
, _Dim.B
from _fact
inner join _dim
on _fact.dim_sk = _dim.Dim_sk
我查询
Select _fact.A
from _view
它会忽略join
_dim
在SQL Server中,如果您创建外部密钥关系,它将执行此操作。
答案 0 :(得分:1)
BigQuery没有主键的概念,所以没有办法预先形成这样的优化;它事先并不知道_dim
中的所有密钥都是唯一的。但是,您可以创建此表单的视图:
#standardSQL
SELECT
A,
(SELECT B FROM _dim
WHERE _dim.dim_sk = _fact.dim_sk) AS B
FROM _fact;
当您从此视图中仅选择A
时,查询不应该最终扫描_dim
中的任何列。您需要确保在任一表中都没有dim_sk
的重复值,否则您将收到标量子查询生成多个元素的错误。