Snowflake中使用内联VALUES值创建视图替代静态表的可行性问询
基于VALUES子句创建静态数据集:视图替代表的可行性评估
我们有时会通过VALUES子句传入内联值,来创建存储小型静态数据集(值永久不变)的表或维度,简化示例如下:
CREATE TABLE my_table AS SELECT * FROM VALUES (1, 2, 3), (4, 5, 6);
近期有同事发现我们也可以用完全相同的逻辑将其创建为视图:
CREATE VIEW my_view AS SELECT * FROM VALUES (1, 2, 3), (4, 5, 6);
该方案可正常运行,但我们希望明确使用视图替代静态表的实际影响,获得社区或专家的建议,判断这一方案是否合理、存在哪些潜在隐患,避免遗漏关键问题。
目前我们已梳理的相关信息如下:
- 读取静态表数据时需要访问云存储或Snowflake缓存
- 读取这类视图的数据时,似乎每次都直接从视图定义中获取值(上层可能也存在缓存)
- 这一点已被查询历史中该类视图查询没有"Bytes Scanned"记录的现象佐证
- 这类视图的数据无法修改,除非替换视图本身,这符合我们的预期,甚至是一项优势
- 针对这类数据集,我们不关注表数据保留策略,即使数据丢失也可轻松重建
- 两种方案的性能表现都很好,对小型数据集来说这一结果符合预期
补充: 已收到两份优质解答,综合判断继续使用表方案更稳妥。
内容的提问来源于stack exchange,提问作者Marco Roy
相关产品推荐
相关产品推荐

