Устранение неполадок при пересчете формулы DAX
При каждом изменении модели данных вашей книги Power Pivot выполняет анализ существующих данных, чтобы определить, требуется ли пересчет, и выполняет обновление наиболее эффективным способом.
Power Pivot обрабатывает следующее во время пересчета формул DAX:
- Dependencies
- Последовательность пересчета для зависимых столбцов
- Transactions
- Пересчет изменчивых функций
Зависимости
Когда столбец зависит от другого столбца и содержимое этого другого столбца каким-либо образом изменяется, все связанные столбцы, возможно, потребуется пересчитать.
Power Pivot всегда выполняет полный пересчет для таблицы, потому что полный пересчет более эффективен, чем проверка измененных значений. Изменения, запускающие пересчет, могут включать удаление столбца, изменение числового типа данных столбца или добавление нового столбца. Эти изменения считаются серьезными изменениями. Однако, казалось бы, тривиальные изменения, такие как изменение имени столбца, также могут вызвать перерасчет. Это связано с тем, что имена столбцов используются в качестве идентификаторов в формулах DAX.
В некоторых случаях Power Pivot может определить, что столбцы можно исключить из пересчета.
Последовательность пересчета для зависимых столбцов
Зависимости рассчитываются до любого пересчета. Если есть несколько столбцов, которые зависят друг от друга, Power Pivot следует последовательности зависимостей. Это гарантирует, что столбцы обрабатываются в правильном порядке с максимальной скоростью.
Сделки
Операции по пересчету или обновлению данных выполняются как транзакция. Это означает, что в случае сбоя какой-либо части операции обновления выполняется откат остальных операций. Это сделано для того, чтобы данные не остались в частично обработанном состоянии. Однако вы не можете управлять транзакциями, как в реляционной базе данных, или создавать контрольные точки.
Пересчет изменчивых функций
Функции DAX, такие как NOW, RAND или TODAY, не имеют фиксированных значений и называются энергозависимыми функциями. Если такие функции DAX используются в вычисляемом столбце, выполнение запроса или фильтрация обычно не приводит к их повторной оценке, чтобы избежать проблем с производительностью.
Результаты для этих функций DAX пересчитываются только при пересчете всего столбца. Эти ситуации включают обновление из внешнего источника данных или ручное редактирование данных, которое вызывает повторную оценку формул DAX, содержащих эти функции.
Однако такие функции всегда будут пересчитываться, если функции используются в определении вычисляемого поля.