繁体   English   中英

在 Azure Synapse 中查询 BULK OPENROWSET 时是否可以检索文件路径/url 信息?

[英]Is it possible to retrieve file path/url information when querying BULK OPENROWSET in Azure Synapse?

我能够通过 Azure Synapse Serverless SQL 查询从存储在 Azure Data Lake Storage Gen 2 目录中的 json 文件中检索所有键和值,如下所示:

SELECT TOP 100 
    someColumn1,
    someColumn2
FROM OPENROWSET(
   BULK 'https://********.dfs.core.windows.net/some/path/**',
   FORMAT = 'csv',
   FIELDTERMINATOR ='0x0b',
   FIELDQUOTE = '0x0b',
   ROWTERMINATOR = '0x0b' 
) WITH (doc NVARCHAR(MAX)) AS ROWS
OUTER APPLY OPENJSON ( [doc] )
WITH (
    [someColumn1] INT '$.someProperty1',
    [someColumn2] INT '$.someProperty2'
) AS someData

我正在寻找检索 JSON 文件的路径/url,以将其解析为我的 SQL 查询返回的额外列。 这是可以实现的吗?

Synapse 提供了返回完整或部分路径的文件filepath

  • 当不带参数调用 function 时,将返回从中检索行的整个文件路径。 在 OPENROWSET 中使用时,DATA SOURCE 返回相对于 DATA SOURCE 的路径。
  • 当使用参数调用 function 时,返回与参数中指示的点上的通配符匹配的部分路由。 例如,如果使用参数值 1,将返回路径的第一个通配符匹配部分。

是的,您可以在带有附加列的突触中获取文件路径以及查询文件。

例子:

SELECT  TOP  100
name,salary,ROWS.filepath() AS  filepath
FROM
OPENROWSET(
BULK  'https://dlsg2p.dfs.core.windows.net/fsn2p/userdetails.json',
FORMAT = 'CSV',
FIELDQUOTE = '0x0b',
FIELDTERMINATOR ='0x0b',
ROWTERMINATOR = '0x0b'=
)
WITH (doc NVARCHAR(MAX)) AS  ROWS
OUTER  APPLY OPENJSON ( [doc] )
WITH (
[name] VARCHAR  '$.name',
[salary] INT  '$.salary'
) AS someData

执行和 Output:

在此处输入图像描述

参考: 文件元数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM