Azure Synapse Serverless - SQL 查询返回目录中每个文件的行

问题描述

我有一个 Azure Data Lake Gen2 容器,其中有几个 json 文件。我想编写一个查询,为每个文件返回一条记录。我对解析文件不感兴趣,我只想知道那里有哪些文件并在视图中返回它。有没有人对我如何做到这一点有任何提示?我发现的一切都是关于如何解析/读取文件......我打算让 Power BI 这样做,因为 json 格式不是标准的。在这种情况下,我只需要一个文件列表。谢谢!

解决方法

您可以使用 Azure Synapse Analytics 无服务器 SQL 池中的 filepath()filename() 函数来返回这些。您甚至可以 GROUP BY 它们返回聚合结果。一个简单的例子:

SELECT 
    [result].filepath() AS filepath,[result].filename() AS filename,COUNT(*) AS records
FROM
    OPENROWSET(
        BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=2019/puMonth=4/*.parquet',FORMAT = 'PARQUET'
    ) AS [result]
GROUP BY [result].filepath(),[result].filename()

有关更多示例,请参阅 documentation