簡體   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