桥接表 - DAX 还是 M?

Bridge tables - DAX or M?

我们应该用DAX还是M构建桥接表?

图片盗自

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

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

另外,DAX表不需要加载为M表。但是我想知道 DAX 相对于 M 的优势是否不是虚幻的? M 似乎只加载一次,而 DAX 似乎是在运行中计算的,也许随时,一遍又一遍?

DAX 计算的 table 是 re-calculated 如果它从中提取数据的任何 table 以任何方式刷新或更新。 (来自 https://docs.microsoft.com/en-us/power-bi/desktop-calculated-tables

他们不是 re-calculated "on the fly",也不是 "over and over"。在使用 DAX 计算 table 或 M 查询 table 之间,Power BI 数据模型的刷新周期没有区别。但是,您可能会发现 DAX 计算的 tables 刷新速度比 M 快,具体取决于 table...

的复杂性

考虑 M Tables、M 条件列、M 自定义列、DAX Tables、DAX 计算列和 DAX 度量。只有 DAX 度量 是动态创建的,不是数据模型的一部分。

所以对于一个简单的桥 Table,DAX Table 和 M Table 没有真正的优势。

两个 Tables 允许一个人建立关系。现在,当我说简单的 Bridge Table 时,它是从 2 或 3 个表创建的,并使用相同的列与两个或多个表建立关系。

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

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

回到拇指法则:- 如果它是由 DAX 创建的,那么 M 不能在其之上进行更改。因此,如果 Bridge Table 是由 DAX 创建的,那么它不会出现在查询编辑器中,并且限制了 GUI 在数据中进行任何所需的简单转换的优势。

对于一个简单的桥接 Table :- DAX。

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