Funkce List.Buffer dokáže zrychlit vyhodnocování dotazu. Zajistí, že se obsah dotazu načte jednou, a pak už se do načteného navazující akce jen dotazují. Nemusí se tedy načítat znovu a znovu.

Příklad:

Tato syntaxe přiřadí ke každému řádku hodnotu Revenue z předchozího řádku:

  • let
       my_step = start,
       diff = Table.AddColumn(my_step, “Difference”, each my_step[Revenue]{[Index]-1}-[Revenue])
    in
       diff

Načítání dotazu ale bude trvat velmi dlouho – např. pro tabulku kolem 1500 řádků se může načítání pohybovat kolem minuty.

Pokud ale seznam nejprve nabufferujete do paměti a pak se do načteného odkazujete, zkrátí se cca na jednu sekundu, doba načítání je tedy neporovnatelně kratší.

  • let
       my_source =start,
       buffered = List.Buffer(my_source[Revenue]),
       diff = Table.AddColumn(my_source, “Difference”, each buffered{[Index]-1}-[Revenue])
    in
       diff