Azure Synapse Serverless - SQL-запрос для возврата строк в каталоге для каждого файла

У меня есть контейнер Azure Data Lake Gen2, в котором есть несколько файлов json. Я хотел бы написать запрос, который возвращает запись для каждого файла. Я не заинтересован в синтаксическом анализе файлов, я просто хочу знать, какие файлы там есть, и вернуть их в представлении. Есть ли у кого-нибудь советы, как я могу это сделать? Все, что я нашел, касается того, как анализировать / читать файлы ... Я позволю Power BI сделать это, поскольку формат json нестандартен. В этом случае мне просто нужен список файлов. Спасибо!


person user24536    schedule 07.01.2021    source источник


Ответы (1)


Вы можете использовать функции filepath() и filename() в бессерверных пулах SQL Azure Synapse Analytics, чтобы вернуть их. Их можно даже 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()

См. документация для дальнейших примеров.

person wBob    schedule 07.01.2021
comment
это отлично сработало ... спасибо! - person user24536; 08.01.2021