桥接表-DAX还是M?

时间:2019-07-17 11:23:24

标签: powerbi dax powerquery m bridge

我们应该用DAX或M构造桥表吗?

enter image description here

here被盗的图片

使用DAX似乎很诱人。使用DAX时,代码简短明了:

IDList = DISTINCT(
    UNION(
         DISTINCT(Table1[ID]) 
        ,DISTINCT(Table2[ID])
        ))

此外,DAX表不必作为M表加载。但是我想知道DAX相对于M的优势是否不是虚幻的? M似乎加载一次,而DAX似乎是一次又一次地动态计算?

2 个答案:

答案 0 :(得分:2)

如果

DAX计算的表以任何方式刷新或更新了从其提取数据的表,则将重新计算。 (来自https://docs.microsoft.com/en-us/power-bi/desktop-calculated-tables

它们不会“即时”重新计算,也不会“反复计算”。使用DAX计算表或M查询表之间,Power BI数据模型的刷新周期没有区别。但是,您可能会发现,根据表的复杂程度,DAX计算表的刷新速度比M表的刷新速度快。

答案 1 :(得分:1)

考虑M个表,M个条件列,M个自定义列,DAX表,DAX计算列和DAX度量。即时创建 DAX度量,而不是数据模型的一部分。

因此对于简单桥表,DAX表和M表彼此之间没有真正的优势。

两个表均允许创建关系。现在,当我说简单的桥接表时,它是由2个或3个表创建的,并使用同一列与两个或多个表建立关系。

但是,当需求变得复杂和敏捷(随时间增长)时,维护和开发工作也会增加(如果由DAX创建)。 (我的个人观点,我想大多数人的个人观点也是如此。)

如果它是由M创建的,那么根据逻辑添加新列或过滤器或替换现有值会更容易。

回到拇指规则:-如果它是DAX创建的,则不能在其顶部使用M进行更改。因此,如果桥表是由DAX创建的,则它不会出现在查询编辑器中,并且会限制GUI在数据中进行任何必需的简单转换的优势。

对于简单的桥接表:-DAX。

但是对于复杂且不断变化的要求:-M。