Azure Synapse Sql-包含带有_和提取中

问题描述

sql无法拾取主文件夹和子文件夹中的所有文件。 Azure Synapse和按需sql请注意,其中有很多普通的sql尚无法使用。

SELECT *
FROM
    OPENROWSET(
        BULK 'https://companyland.dfs.core.windows.net/storageBoxes/data/*.snappy.parquet',FORMAT='PARQUET'
    ) AS [r];

在此DATA文件夹中,有一个名为MONTH_10的文件夹,然后每天都有一个文件夹,如Day_1,其中包含该天的镶木文件。在DATA文件夹的正下方,还有5个实木复合地板文件。今年所有子文件夹中都有50个实木复合地板文件

当我在Synapse中执行上述sql时,它只返回5个文件而不是55个文件,因为它应该包括文件夹。查看Microsoft文档,这是因为子文件名称具有_或。在其中。

要单独收集当天的文件,我需要将查询更改为此:

SELECT *
FROM
    OPENROWSET(
        BULK 'https://companyland.dfs.core.windows.net/storageBoxes/data/*/*/*/*',FORMAT='PARQUET'
    ) AS [r];

我还异常地发现Azure Snyapse不喜欢create view语句中的并集语句,所以我想知道是否有一种方法可以更改我的BULK语句,以便全部55个文件都被提取

解决方法

下面的屏幕快照显示了我进行的测试和使用的查询。我保留了带有单个条目的文件,并指定了它们所在的文件夹。例如:Month_1文件夹-> day_1文件夹->文件中包含month1day1作为数据。

enter image description here

存储结构:

enter image description here

enter image description here

enter image description here

enter image description here