我们应该用DAX或M构造桥表吗?
从here被盗的图片
使用DAX似乎很诱人。使用DAX时,代码简短明了:
IDList = DISTINCT(
UNION(
DISTINCT(Table1[ID])
,DISTINCT(Table2[ID])
))
此外,DAX表不必作为M表加载。但是我想知道DAX相对于M的优势是否不是虚幻的? M似乎加载一次,而DAX似乎是一次又一次地动态计算?
答案 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。