如何解决使用带有字符串谓词的逻辑视图从字符串分区中明显受益
在等待 BigQuery 上的字符串分区时,我想使用中间视图通过哈希函数执行字符串 整数转换,该函数允许透明地查询按字符串哈希分区的表。
例如,给定一个包含 2 列 data_partitionned_by_integer
的表 name STRING,hashed_name INT64
,我们构建一个哈希表 hash_table
(名称 STRING,hashed_name INT64),其中 hashed_name = MOD(ABS(FARM_FINGERPRINT(name)),4000)
。
我们还构建了一个逻辑视图 data_view
,定义为:
SELECT
hash_table.name,data_partitionned_by_integer.* EXCEPT (name)
FROM
`hash_table` hash_table
INNER JOIN
`data_partitionned_by_integer` data_partitionned_by_integer
ON
hash_table.hashed_name = data_partitionned_by_integer.hashed_name
借助此逻辑视图 data_logical_view
,BigQuery 查询优化器的下推机制允许从分区修剪中受益,即使使用 name
谓词过滤视图也是如此。但这种行为看起来并不稳定。事实上,当用 INNER JOIN
替换 FULL JOIN
时,我们不再受益于分区修剪。
与参数化逻辑视图 data_parametrized_view
相比:
SELECT
*
FROM
`data_partitionned_by_integer`
WHERE hashed_name = MOD(ABS(FARM_FINGERPRINT(@name)),4000)
总是从分区修剪中受益,但对于针对此视图进行的每个查询都需要 name
参数。
我想问的问题是:如果我们坚持这个data_view
,即使谓词只包含一个字符串name
,使用逻辑视图INNER JOIN
我们是否总是可以从分区修剪中受益方法?
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。