PowerBI中基于双切片器的多CSV版本动态表格对比问题
解决PowerBI多版本CSV数据对比方案
1. 统一数据模型(关键第一步)
- 打开Power Query编辑器,给每个CSV表添加版本标识列:
- 选中V1的表,添加自定义列,命名为
Version,值固定为"V1"; - 同理给V2、V3等所有CSV表添加对应版本的
Version列;
- 选中V1的表,添加自定义列,命名为
- 将所有表追加为一个合并表:点击「追加查询」→「追加多个查询」,选择所有CSV表,合并后命名为
Combined_Data,最终表包含列:Filename、Mileage、City、Time、Version。
2. 创建独立版本切片器的维度表
因为需要两个独立的版本选择器,不能直接用合并表的Version列(会互相影响),所以创建两个无关联的计算表:
Version_Slicer1 = DISTINCT(Combined_Data[Version]) Version_Slicer2 = DISTINCT(Combined_Data[Version])
- 注意:这两个表不要和
Combined_Data建立任何关系,保持独立。
3. 编写DAX度量值获取选中版本的数据
针对需要对比的字段(Mileage、City、Time),分别编写两个版本的度量值,以Mileage为例:
V1版本度量值
Selected_V1_Mileage = VAR Selected_V1 = SELECTEDVALUE(Version_Slicer1[Version]) RETURN CALCULATE( MAX(Combined_Data[Mileage]), // 若每个Filename对应唯一行用MAX,多行则根据需求用SUM/AVG Combined_Data[Version] = Selected_V1, ALLEXCEPT(Combined_Data, Combined_Data[Filename]) )
V2版本度量值
Selected_V2_Mileage = VAR Selected_V2 = SELECTEDVALUE(Version_Slicer2[Version]) RETURN CALCULATE( MAX(Combined_Data[Mileage]), Combined_Data[Version] = Selected_V2, ALLEXCEPT(Combined_Data, Combined_Data[Filename]) )
- 重复上述逻辑,创建
Selected_V1_City、Selected_V2_City、Selected_V1_Time、Selected_V2_Time度量值,把MAX(Combined_Data[Mileage])替换为对应字段即可。
4. 构建对比可视化
- 添加两个切片器,分别关联
Version_Slicer1和Version_Slicer2的Version列; - 添加表格/矩阵可视化,行选择
Combined_Data[Filename],值区域添加所有编写的度量值; - 可选:给表格添加条件格式,比如当
Selected_V1_Mileage <> Selected_V2_Mileage时高亮单元格,快速定位差异。
5. 处理行数差异场景
如果某个Filename在选中的版本中不存在,对应度量值会返回空白,表格中会直观显示,清晰看到版本间的行存在性差异。
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

