Я работаю в фабрике данных, и мне нужна помощь в параметризации набора данных, чтобы я мог использовать несколько файлов в папке больших двоичных объектов для обработки в PowerQuery, а затем отправить их в таблицу AzureSQL для приемника (хранилища). Я не хочу создавать 100 наборов данных, если хочу обработать 100 файлов Excel одинаково с помощью PowerQuery.
Я успешно выполнил конвейер следующим образом:
Получите действие метаданных для чтения всех файлов в папке больших двоичных объектов (.xlsx), затем используйте цикл foreach для получения каждого файла и внутри этого действия для копирования его в базу данных SQL Azure.
Теперь я хочу посмотреть, смогу ли я сделать следующее или подобное:
Получите список файлов в папке BLOB-объектов или получите полные адреса файлов BLOB-объектов, а затем используйте цикл for, чтобы попытаться передать один адрес файла/файла (за каждый оборот цикла) и обработать его с помощью PowerQuery.
Возможно ли это вообще сейчас? Действительно застрял с этим. Я хочу обработать данные в PowerQuery перед их загрузкой в приемник.
Альтернативные идеи приветствуются!





Вы также можете динамически передавать имя файла в наборе данных Power Request. Ниже приведены подробные шаги.


@item().name.Таким образом, вы можете добиться требования использования одного и того же конвейера запросов мощности для всех файлов.
1) Когда в действие получения метаданных добавляются дочерние элементы, вы можете указать выражение как @activity('get Metadata').output.childItems в действии foreach. 2) Да. Создайте набор данных и укажите путь к каталогу. В имени файла укажите выражение @item().name. 3) Я использовал текстовый набор данных с разделителями. Если вы используете данные .xls, вам также необходимо указать имя/индекс листа. 4) Да, данные обрабатываются из нескольких файлов в цикле.
Спасибо, я добавил @activity('get Metadata').output.childItems в foreach, затем @item().name в качестве имени файла вместе с индексом листа, я смог проверить конвейер без ошибок. Единственное, когда я иду проверять PowerQuery, я не вижу, чтобы он что-либо разрешал, потому что имя файла — item.name(). Здесь: [img]i.imgur.com/aKCl2jR.png[/img] Я хотел бы посмотреть, что происходит в PowerQuery, чтобы добавить туда больше шагов.
сначала вы можете указать имя файла, а затем определить запрос мощности. Позже замените имя файла на @item().name.
Будет ли @item().name в имени файла выдавать ошибку каждый раз через несколько дней после публикации набора данных, он станет желтым с предупреждением. Кроме того, имя листа время от времени выдает красное предупреждение «Не удалось».
Не обращайте внимания на предупреждение. Можете ли вы поделиться снимком экрана неудавшегося красного предупреждения?
Кажется, я не могу игнорировать это предупреждение, поскольку из-за этого мой PowerQuery терпит неудачу каждое утро после публикации изменений в наборе данных. Мне пришлось отказаться от использования способа PowerQuery, поскольку он был слишком медленным по сравнению с обычными потоками данных в ADF.
Хорошо. В зависимости от ваших требований лучше сопоставить поток данных.
Спасибо @Aswin, поэтому я попробовал следующее: выполнил действие метаданных (дочерние элементы) и добавил @activity('Get Metadata').output.value в цикл for. Следующий шаг: предлагаете ли вы сначала создать набор данных, и если да, следует ли мне указать набор данных на конкретный файл .xlsx или просто путь к каталогу? Также может потребоваться имя/индекс листа? Кроме того, можете ли вы показать, как вы создали свой PowerQuery, поскольку на начальном этапе он выполняется только в том случае, если мы указываем на один файл, а не на каталог? Удалось ли вам успешно запустить этот конвейер и передать данные из нескольких файлов для обработки в PowerQuery в цикле?