Azure Synapse Polybase / Внешние таблицы - возвращать только последний файл

У нас есть файлы, секционированные в datalake, и мы используем пул Azure Synapse SQL Serverless для запроса к ним с помощью внешних таблиц перед визуализацией в Power BI.

Файлы хранятся в следующем формате разделов {source}/{year}/{month}/{filename}_{date}.parquet

Затем у нас есть внешняя таблица, которая загружает все файлы для этого источника.

Для всех файлов, которые увеличиваются каждый день, это отлично работает, поскольку мы хотим, чтобы все файлы были включены. Однако у нас есть некоторые интеграции, и мы хотим вернуть только последний файл. (т.е. последний отправленный нам файл - это текущее состояние, которое мы хотим загрузить в Power BI).

Можно ли в операторе внешней таблицы вернуть только последний файл? Или нужно добавить дополнительную логику? Мы можем загрузить все файлы, а затем отфильтровать последнее имя файла и сохранить его в новом месте. В качестве альтернативы мы могли бы попробовать создать внешнюю таблицу, которая меняется каждый день.

Есть ли лучший способ подойти к этому?


person Will W    schedule 01.12.2020    source источник


Ответы (1)


Если вы используете выделенные пулы, я бы изменил расположение вашей таблицы, указав папку с последними файлами.

Загружайте каждый день в новую папку, а затем измените МЕСТОПОЛОЖЕНИЕ внешней таблицы, чтобы посмотреть на текущий / последний день, но вам может потребоваться добавить дополнительную логику для отслеживания в таблице управления последней успешной даты загрузки.

К сожалению, я сам не нашел лучшего способа сделать это.

person JPVoogt    schedule 08.12.2020
comment
изменить РАСПОЛОЖЕНИЕ внешней таблицы - возможно ли это? Пробовал использовать пул SQL без сервера (по запросу) и не могу заставить его работать в Synapse - person Mark Zhukovsky; 09.02.2021