Есть ли способ заставить усердно оценивать выражения Power Query M Table и Record? - PullRequest
0 голосов
/ 10 января 2019

Я работаю над визуализацией Монте-Карло в PowerBI. До сих пор я был в состоянии выполнить симуляцию Монте-Карло, но я застрял в создании визуализации.

Я создал таблицу с двумя столбцами, итерацией и результатом, которая может иметь любое количество строк (скажем, 1000 для примера). Я хочу отобразить результат в виде гистограммы из примерно 20 баров, однако, поскольку результатом может быть любое число, я должен сгруппировать результаты по 20 диапазонам, которые я буду отображать на графике. У меня все это работает, я получаю хорошую таблицу с именем (которое является текстовым представлением диапазона), минимальным значением, максимальным значением и счетчиком количества итераций в этом диапазоне.

Но потом я заметил, что общее количество итераций не соответствует 1.000, я проверил, почему это может быть, и заметил, что несколько переменных, похоже, были пересчитаны. Поэтому я создал тестовый код, чтобы увидеть, что произошло:

    tableMinGevolg = Record.Field(Table.Min(MonteCarlo_runs, "gevolgTotaal"), "gevolgTotaal"),
    test1 = tableMinGevolg,
    test2 = tableMinGevolg,
    test3 = tableMinGevolg,

Запуск этого кода может / приведет к 3 различным значениям для тестовых переменных. Итак, я покопался и обнаружил, что Power Query M использует ленивые вычисления для выражений Record и Table. Поскольку моделирование в Монте-Карло использует случайность, я предполагаю, что это вызывает мою проблему. Каждый раз, когда к таблице обращаются, значения оцениваются, и случайность может создавать разные результаты, что мешает моим результатам.

Я хотел бы знать, можно ли принудительно оценить переменную, чтобы я мог быть уверен, что моделирование по методу Монте-Карло больше не будет выполняться, пока я вычисляю эти диапазоны?

1 Ответ

0 голосов
/ 10 января 2019

Попробуйте использовать функцию Table.Buffer для загрузки таблицы в память.

tableMinGevolg = Table.Buffer(Record.Field(Table.Min(MonteCarlo_runs, "gevolgTotaal"), "gevolgTotaal"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...