Обновление без сюрпризов: схема, скорость и контроль качества

Запрос успешно работал восемь месяцев. В сентябре источник переименовал «Сумма» в «Сумма с НДС», обновление упало, а пользователь увидел только жёлтый треугольник Excel.

Регулярное обновление — отдельный продукт. У него есть расписание, владелец, допустимая длительность и понятие корректного результата. Сам факт отсутствия красной ошибки недостаточен: источник может вернуть пустую таблицу, старый файл или половину периода.

Параметры отделяют среду от логики

Путь к папке, адрес сервера и начало периода не должны быть спрятаны внутри шагов. Создайте параметры с типами и описанием. Для локальной книги и общего ресурса значения различаются, а алгоритм остаётся тем же. Пароли параметрами Power Query не делают: учётные данные управляются настройками источника.

Изменение схемы бывает трёх видов

ИзменениеРеакция
новый необязательный столбецразрешить и зафиксировать в профиле
исчез обязательный столбецостановить публикацию с точной ошибкой
сменился тип или смыслвыпустить новую ветку преобразования и сверить итоги

Шаг Table.SelectColumns может игнорировать отсутствующие поля, но для обязательных колонок это опасно. Гибкость выбирают осознанно: технический столбец можно пропустить, сумма заказа обязана существовать.

Скорость: переносим работу к источнику

Для SQL-источников Power Query способен превратить шаги фильтрации, выбора столбцов и группировки в запрос к серверу — это query folding. В Excel проверяйте доступность команды «Просмотр нативного запроса» и используйте диагностику запросов; пошаговые индикаторы folding относятся к Power Query Online. Пользовательская функция или добавление индекса может остановить свёртку, после чего миллионы строк поедут в Excel.

Практический порядок: сначала отфильтровать период и выбрать нужные колонки, пока folding работает; затем выполнить локальные преобразования. Не оптимизируйте на глаз — сравните длительность диагностики запросов и объём прочитанных данных.

Паспорт каждого обновления

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

Обновлено:               23.08.2026 11:05
Максимальная дата:       22.08.2026
Строк продаж:            48 211
Уникальных OrderID:      48 211
Сумма:                   31 842 110,40
Неизвестных SKU:         17
Файлов с ошибкой:        0
Статус публикации:       WARNING — новые SKU

Статус WARNING допускает просмотр, но сообщает о качестве справочника. ERROR — например, отсутствует файл месяца или сумма равна нулю при ненулевом числе строк — блокирует отправку отчёта. Границы зависят от бизнеса; нельзя механически считать любой null катастрофой.

Передача книги другому человеку

Проверьте обновление под учётной записью получателя. Абсолютный путь C:\Users\Анна\Desktop и личный доступ к SharePoint сделают книгу «работающей только у автора». На листе README укажите источники, параметры, ожидаемое время, владельца данных и действия при каждом статусе.

Наконец, выполните восстановление: испортите копию одного файла, убедитесь, что QualitySummary показал ошибку, замените файл и повторите обновление. Процесс, который никто не пробовал чинить, нельзя считать готовым к ежемесячному использованию.

Финальная приёмка: коллега на чистой машине меняет только документированные параметры, выдаёт доступ к источнику и получает те же контрольные показатели. Никаких ручных копирований и исправлений после Refresh.

Проверьте себя
1. Где следует хранить пароль к источнику данных?
AВ текстовом параметре книги
BВ имени запроса
CВ механизме учётных данных источника
DВ первой строке CSV
2. Какой порядок шагов обычно помогает сохранить query folding?
AСначала локальная пользовательская функция, затем фильтр
BСначала фильтр периода и выбор колонок, затем локальные преобразования
CСначала загрузить все строки на лист
DПорядок никогда не влияет
3. Почему успешного завершения Refresh недостаточно?
AExcel всегда скрывает половину строк
BЗапрос может вернуть пустые, старые или неполные данные без технической ошибки
CPower Query не поддерживает суммы
DЛюбой Refresh удаляет параметры