代码之家  ›  专栏  ›  技术社区  ›  Przemyslaw Remin

Dax与M(功率查询)表——组合大型表的最佳实践

  •  0
  • Przemyslaw Remin  · 技术社区  · 4 年前

    垂直组合两个结构相同的大表的最佳方法是什么。每个表大约有200万行。有吗 性能优势 用M,而不是DAX?

    M方法

    BigTable_M  = Table.Combine( {Table1, Table2} )
    

    DAX方法

    BigTable_DAX = UNION ( 'Table1', 'Table2' )
    

    我有一种感觉,M路把桌子装了两次。在将行加载到BigTable_M时,分别加载每个主源(表1和表2),然后再加载两个表。为了以后获得更好的性能,有什么理由承受这种双重加载吗?

    从这篇文章来看,M似乎更快。

    https://www.sqlbi.com/articles/comparing-dax-calculated-columns-with-power-query-computed-columns/

    0 回复  |  直到 4 年前
        1
  •  4
  •   Jon    4 年前

    最佳实践是在将数据加载到数据模型之前,先在M/Power Query中执行此操作。您总是希望数据模型快速响应,计算开销尽可能小。我总是建议从最底层开始工作,例如,如果你可以在源代码中完成,就在那里完成,如果你不能在Power Query中完成,那就在那里进行,最后在Dax/Power Pivot部分完成。 如果您使用的是数据库,这很有效,因为您让设计用于执行繁重的数据提升/转移的技术,而不是在Power BI中完成所有工作。

    如果您正在处理文件,那么最好在Power Query部分完成,并再次让Power Pivot引擎尽可能快。

    在咨询客户数据模型(包括Power BI和分析服务)时,大多数问题来自在数据模型中做事情,而不是在此之前做。例如,数据类型转换、字符串替换、迭代计算、排名等最适合在模型出现之前很久就完成。

        2
  •  2
  •   Alexis Olson    4 年前

    在查询编辑器中执行此操作时,您可以选择仅将组合表加载到数据模型中,同时具有 Table1 Table2 仅作为暂存表存在。这应该可以解决您对两次加载表的担忧。

    我预计将它们组合在M中会产生更好的压缩效果(尽管差异可能不大)。M中的组合也允许在某些情况下进行查询折叠。