首页 > 解决方案 > Power BI - DAX 查询以删除 SUM 计算中的重复行

问题描述

销售价值 - 重复删除

我的情况是这样的: SalesValue已经输入了多个会话,即午餐、早餐、晚餐,按SessionKey数字分组。对于SalesValue给定的生产计划日期,基于和MenuKey,有时会重复 2 个或更多会话。RawMaterialKeyIngSFKey

我需要在 Power BI 中使用 DAX 查询来删除SalesValue基于给定日期ProductionPlanDateSessionKey特定日期的重复项MenuKey

我附上了SalesValue包含不同会话中同一日期的重复值的示例值范围的屏幕截图,供您参考。例如,第 7 行和第 14 行具有相同ProductionPlanDate的 、SessionKeyMenuKeySalesValue

标签: powerbidaxpowerquery

解决方案


因此,您有一个带有一个“Grain”的表,并且您想通过使用列的子集来更改“Grain”。具体来说,您只需要具有不同列 ProductionPlanDate、SessionKey、MenuKey 和 SalesValue 的行

要在 DAX 查询中执行此操作,您将使用

evaluate 
summarize
( 'table name'
, 'table name'[ProductionPlanDate]
, 'table name'[SessionKey]
, 'table name'[MenuKey] 
, 'table name'[SalesValue]
)

您可以提供它来创建计算表或将其提供给需要使用此粗粒度数据集的每个度量。

但是,看起来您在 Power BI 中,执行此操作的更合适的位置是使用 Power Query(通过 Power BI 的“编辑查询”部分)创建更粗粒度的表。

这比在 DAX 中执行此操作要好,因为 DAX 更适合分析,其中 Power Query 适合数据转换 - 并且您想要进行数据转换。

您可以将您现在拥有的表格与新修改的表格一起保留或相应地替换它。

  • 选项 A 只会将您的传入表更改为具有新的粗粒度。
  • 选项 B 将保留您的原始表格并在其旁边放置新的粒状表格。请注意,这意味着您创建的任何 Power BI 视觉对象都需要“重新连接”才能使用新表。

要在 Power Query 中进行转换,这两个选项的步骤是

  • 转到 PowerBI 上的编辑查询区域
  • 通过按住 ctrl 并依次单击每列的列标题来选择要创建新 Grain 的列(即 ProductionPlanDate、SessionKey、MenuKey 和 SalesValue)。
  • 右键单击所选列之一的列标题,然后选择“删除重复项”

如果您想要选项 B,只需先使用“参考”复制现有表,然后执行以下相同操作:

  • 在左侧查询部分找到您现有的表,单击并单击参考
  • 将新表重命名为适当的名称
  • 如上所述将转换步骤应用于新表
  • 单击关闭并应用并重新连接您需要使用新表的任何现有视觉对象
  • 如果您发现不需要旧表,您可以在 Power Query 中再次单击它并取消选中“启用加载”,这样 PowerBI 就不会再看到它了。

推荐阅读