我正在用PowerBI做蒙特卡洛的可视化工作。到目前为止,我能够执行蒙特卡洛模拟,但我被困在创建可视化上。
我创建了一个包含两列的表,iteration和result,这两列可以有任意数量的行(假设本例中有1.000行)。我希望以大约20个条形图的形式显示结果,但是,由于结果可以是任何数字,因此我必须将结果分组到20个范围内,我将在图形中显示这些结果。我完成了所有这些工作,我得到了一个很好的表,其中有一个名称(这是范围的文本表示)、最小值、最大值,以及在这个范围内有多少次迭代。
但是后来我注意到迭代的总数与1.000次不匹配,我检查了为什么会这样,我注意到似乎重新计算了多个变量。所以我创建了一些测试代码来看看发生了什么:
tableMinGevolg = Record.Field(Table.Min(MonteCarlo_runs, "gevolgTotaal"), "gevolgTotaal"),
test1 = tableMinGevolg,
test2 = tableMinGevolg,
test3 = tableMinGevolg,
运行此代码可以/将导致测试变量的3个不同的值。因此,我深入研究,发现Power Query M对记录和表表达式使用惰性计算。因为蒙特卡洛模拟使用了随机性,所以我认为这会导致我的问题。每次引用该表时,都会对这些值进行评估,随机性可能会产生不同的结果,这会扰乱我的结果。
我想知道是否有可能强制对变量进行急切求值,这样我就可以确保在我计算这些范围时不会再次执行蒙特卡洛模拟?
发布于 2019-01-11 01:12:32
尝试使用Table.Buffer
function将表加载到内存中。
tableMinGevolg = Table.Buffer(Record.Field(Table.Min(MonteCarlo_runs, "gevolgTotaal"), "gevolgTotaal"))
https://stackoverflow.com/questions/54133644
复制相似问题