在Snowflake中运行暂存数据文件的查询时,我注意到文件名的末尾实际上有一个隐含的glob。
换句话说
SELECT COUNT(*)
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz
实际上是
SELECT COUNT(*)
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz*
例如,我在阶段4089.jsonl.gz
和4089.jsonl.gz.1.gz
中有两个文件
运行以下内容:
SELECT COUNT(*)
FROM @MASTERCATALOGUE.CUSTOMERS.USAGE_STAGE/4089.jsonl.gz
我希望只得到4089.jsonl.gz
的数量。但是,由于隐式glob最终与两个文件匹配,我将两者的数量加在一起。
文档中没有提及这一点。
我尝试过在文件名两边加上单引号和双引号,但这没什么区别。
任何表示法的想法都不会添加此隐式glob吗?
谢谢。
答案 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#