Snowflake数据仓库-查询暂存文件中的数据

时间:2019-11-14 17:26:48

标签: snowflake-data-warehouse

在Snowflake中运行暂存数据文件的查询时,我注意到文件名的末尾实际上有一个隐含的glob。

换句话说

SELECT COUNT(*) 
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz

实际上是

SELECT COUNT(*) 
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz*

例如,我在阶段4089.jsonl.gz4089.jsonl.gz.1.gz中有两个文件

运行以下内容:

SELECT COUNT(*) 
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz

我希望只得到4089.jsonl.gz的数量。但是,由于隐式glob最终与两个文件匹配,我将两者的数量加在一起。

文档中没有提及这一点。

Querying data in staged files

我尝试过在文件名两边加上单引号和双引号,但这没什么区别。

任何表示法的想法都不会添加此隐式glob吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以通过过滤METADATA $ FILENAME元数据列来限制结果:

SELECT COUNT(*) 
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz 
WHERE METADATA$FILENAME = '4089.jsonl.gz'

https://docs.snowflake.net/manuals/user-guide/querying-metadata.html#