Страницы: 1
RSS
Время обновления запросов Power Query, способ измерения быстродействия
 
Добрый день, уважаемые форумчане.

возник вопрос: существует ли какой либо способ измерить скорость обновления запроса в power query по аналогии с RangeTimer  - макросом

сейчас все эмпирически происходит то есть написал - вроде работает потом добавил строчку начало обновляться дольше - хочется какой то инструмент для наглядного сравнения скорости вычислений

поделитесь опытом кто то что знает по данной теме )))))
 
 
Фиксируете значение DateTime.LocalNow() в первом шаге запроса потом его же в последнем. Потом разность и куда-то выводим полученное значение. Единственно что это значение наверное не будет учитывать время выгрузки полученного результата в модель данных или таблицу или куда там еще.
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо, пошел пробовать )))
 
Доброе время суток.
Цитата
PooHkrd написал:
Фиксируете значение DateTime.LocalNow() в первом шаге запроса потом его же в последнем
Коллега, есть одна проблема. Power Query весь построен на ленивых вычислениях значений функций. То есть, это самое DateTime.LocalNow() будет вызвано только тогда, когда потребуется выполнить вывод. Фактически - время начала выполнения в результате будет равно времени завершения. Не выйдет так.
А как - увы, не знаю. Только если синхронно обновлять запрос макросом можно получить разницу, тут правда, вы правы, будет включено и время вывода. Впрочем, а почему бы и нет?
 
Короче, накопал вот такую статью от Криса нашего Вебба. Сам не ковырял еще, времени нет. Но может кому поможет.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Короче, накопал
Большое спасибо.
 
Статья действительно хорошая, но честно говоря, мучил эту схему, и получал очень странные результаты. По логам операция выполнялась менее чем за секунду, а по факту висела у меня больше минуты.
Есть еще статья Вани Бондаренко на похожую тему: https://bondarenkoivan.wordpress.com/2017/09/19/how-to-track-refresh-time-in-power-bi-desktop/
F1 творит чудеса
 
Ну что ж из всего вышеизложенного делаю вывод что код:
Код
let
   SomeFunction = ()=> DateTime.LocalNow(),
   InvokeAfter5Secs = 
      Function.InvokeAfter(SomeFunction, #duration(0,0,0,5)),
   Output = 
      Duration.ToText(InvokeAfter5Secs - DateTime.FixedLocalNow())
in
   Output

это наше все для замера времени выполнения запроса.
А если посмотреть на то что пишут классики
Цитата
The question here is, though, what time does DateTimeFixedLocalNow() actually return? I asked on the Power Query forum here and Ehren from the Power Query dev team revealed that it returns the system date and time at the point when the query begins.
то можно даже в конце запроса написать.
Код
= DateTime.LocalNow() - DateTime.FixedLocalNow()
Изменено: PooHkrd - 27.03.2018 13:43:00
Вот горшок пустой, он предмет простой...
 
Вспомнил, писал я как-то об одной штуке для этого год назад :) Уже и сам забыл :)
http://excel-inside.pro/blog/2017/01/17/on-lazy-value-evaluation-order-in-power-query-and-power-bi/
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
Вспомнил, писал я как-то
Эт точно. А я читал и забыл.  :D Осторожно надо вести расчеты с текущим временем в PQ.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх