1. Chris, thanks a lot, "allow data preview to download in the background" feature was really helpful, the behavior of PQ changed dramatically, and now, if I change Q3, I'll just have 1 call for every step of Q1 .. Q3, which is perfect.
The behavior during Refresh of Q3 haven't changed, but, despite this is not logical, this is not a _stop_ factor for a little bit of complex ETL.
I don't understand why the behavior changed though, actually such behavior (with ""allow data preview to download in the background" turned ON) seems like a bug in a PQ. If not - it would be great to understand it's logic.
2. As for Buffer - I'm still not sure that I understand it's definition. As far as I understand from all the explanations and my experience - Buffer creates an immutable copy of a variable (even created from datasource), but only for the time of one evaluation, i.e. only during execution of operator like Q2 = some(Q1) where Q1 = Table.Buffer(datasource).Is it correct?
So for code below we'll have 2 call to datasource - 1 per each row, but without Bufferinstead of 1 call for row 2 we would have multiple calls to datasource.
Q1=Table.Buffer(datasource),
Q2 = Table.AddColumn(Source, "Q2", each Table.RowCount(Q1))