适用范围:Power BI Desktop Power BI 服务
使用 Power BI 的显示没有数据的项功能,以显示不包含度量数据的数据行和列。
创建视觉对象时,Power BI 默认不显示所有可能的数据。 相反,Power BI 会向数据应用度量值,然后省略具有空白度量值的行和列。 在某些情况下,可能需要显示省略的数据。 在这些场景中,显示无数据项功能提供了一种将该数据包含在可视化中的方式。
显示没有数据的项
若要打开 没有数据功能的“显示项目 ”,请执行以下步骤:
- 选择一个视觉对象。
- 转到 “可视化效果 ”窗格,找到 X 轴 或 Y 轴 字段。
- 右键单击井中的字段,然后选择“ 显示无数据的项目”。
“显示不含数据的项”功能在以下情况下不起任何作用:
- 未向视觉对象添加度量值,分组列来自同一个表。
- 视觉图示中的组不相关。 Power BI 不会为具有不相关的组的视觉对象运行查询。
- 度量值与所有组均无关。 在这种情况下,度量值返回所有组组合的相同值或空白值。 对于某些组合,它永远不会为空,但不是其他组合。 由于度量值没有方差,因此启用该功能不起作用。
- 用户定义度量值筛选器排除空白度量值,例如
SalesAmount > 0。
注意
打开选项以显示没有数据的项目可能会对性能产生负面影响,并可能导致视觉对象呈现缓慢或数据导出超时。
功能的工作原理
“显示不含数据的项”的最有趣用法是存在度量值的情况。 假设存在组来自同一个表或可以通过模型中的路径进行关联的情况。 例如,在 本文末尾的示例数据模型中, ProductStyle 表与 Product 直接相关,间接与 Sales 相关。 可以通过“Product”表关联“ProductStyle”和“ProductCategory”。
以下案例比较了在关闭和打开显示没有数据的项时,Power BI 的行为。 这些情况还使用本文末尾的示例数据模型。
对同一表中的列进行分组
以下示例对同一表 Product[Color] 和 Product[Size] 中的两列进行分组,然后应用 Sum(Sales[Quantity]) 度量值。 关闭无数据功能的“显示项”时,Power BI 会显示以下数据:
| Product[Color] | Product[Size] | 和(Sales[Quantity]) |
|---|---|---|
| 蓝色 | 中等 | 15 |
| 蓝色 | 小型 | 10 |
当 显示无数据项的功能开启时,Power BI 将显示以下数据:
| Product[Color] | Product[Size] | Sum(Sales[Quantity]) |
|---|---|---|
| 蓝色 | 大型 | |
| 蓝色 | 中等 | 15 |
| 蓝色 | 小型 | 10 |
| Red | 大型 |
启用该功能时会显示两个新组合: 蓝色 - 大 和 红色 - 大。 这两个条目在 Sales 表中没有对应的 Quantity 值。 但是,它们都存在于 Product 表中。
对相关表中的列进行分组
以下示例对相关表中的两列( ProductStyle[Finish] 和 Product[Color])进行分组,然后应用 Sum(Sales[Quantity]) 度量值。
关闭无数据功能的“显示项”时,Power BI 会显示以下数据:
| ProductStyle[Finish] | Product[Color] | 求和(Sales[Quantity]) |
|---|---|---|
| 光泽 | 蓝色 | 10 |
| 亚光 | 蓝色 | 15 |
当启用 显示无数据项 功能时,Power BI 将显示以下数据:
| ProductStyle[Finish] | Product[Color] | 求和(Sales[Quantity]) |
|---|---|---|
| 光泽 | 蓝色 | 10 |
| 光泽 | Red | |
| 亚光 | 蓝色 | 15 |
| 无 |
当功能打开时,会显示两个新的组合:高光 - 红色 和 无 - 空,具体原因如下:
- Power BI 首先考虑 ProductStyle[Finish] 并选择要显示的所有值,这会导致 “光泽”、“ 马特”和 “无”。
- Power BI 使用这些值中的每个值来选择所有对应的 Product[Color] 条目。
- None 值与任何 Product[Color] 值不对应,因此 Product[Color] 值将显示空白。
为列选择值的机制取决于列的顺序。 可以将此机制视为表之间的LEFT OUTER JOIN操作。 如果列的顺序发生更改,结果也会更改。
请考虑一个示例来了解更改顺序如何影响结果。 此示例与上一个示例相同,但排序已更改。 本示例对 Product[Color] 和 ProductStyle[Finish] 列进行分组,然后应用 Sum(Sales[Quantity]) 度量值。
当启用显示无数据的项功能时,Power BI 将显示以下数据:
| Product[Color] | ProductStyle[Finish] | Sum(Sales[Quantity]) |
|---|---|---|
| 蓝色 | 光泽 | 10 |
| 蓝色 | 亚光 | 15 |
| Red | 光泽 |
ProductStyle[Finish] 值为 None 的表中未显示任何数据。 在本例中,Power BI 先选择了“Product”表中的所有“Color”值。 对于每种颜色,Power BI 会选择包含数据的相应 Finish 值。 由于 “无” 不显示在 任何颜色组合中,因此 Power BI 不会选择它。
Power BI 视觉对象行为
在图表中 打开“显示无数据的项目” 时,系统会自动启用同一 视觉组 或层次结构中的所有字段的这一功能。 视觉对象存储桶是 可视化 效果窗格中的一个字段,用于确定视觉对象中字段或层次结构的角色。 可能的角色包括 X 轴、 Y 轴、 图例、 类别、 行和 列。
例如,假设矩阵图形在行类别中包含三个字段。 如果为一个字段打开“显示没有数据的项目”,则会为存储桶中的所有项目启用该功能。 在下图中,显示没有数据的项已为“行”存储桶中的第一个字段“供应商ID”打开。 此功能也会自动对 行存储桶中的其他字段开启。
相反,列存储桶中显示的大陆字段没有自动启用显示无数据项。
将视觉对象转换为其他类型(例如将矩阵视觉对象转换为表视觉对象)时,通常会发生此视觉行为。 例如,假设启用了存储桶中字段的“显示无数据项”功能。 如果转换将其他字段移动到该存储桶,则会自动为这些字段启用该功能。
请考虑上一示例中的数据。 表视觉对象只有一个存储桶,即 “列” 存储桶。 将矩阵转换为表时,矩阵中 “行 ”和 “列” 存储桶中的所有字段将移动到表中的 “列” 存储桶。 在这种情况下, SupplierID 字段是移动到该存储桶的字段之一。 如果为 SupplierID 打开 显示没有数据 功能,则转换将为所有移动到表 列 类别的字段(包括 大陆 字段)开启该功能。
导出数据
使用“导出汇总数据”功能时,“显示不含数据的项”功能的行为与导出转换为表视觉对象时的行为相同。 因此,导出视觉对象(如图表矩阵视觉对象)时,导出的数据可能与显示的视觉对象不同。 原因是导出视觉对象时,它首先转换为表视觉对象。 该过程将为所有被导出的字段启用显示无数据项功能。
示例数据模型
本部分介绍本文中示例使用的示例数据模型。
型号
Data
| Product[ProductId] | Product[ProductName] | Product[Color] | Product[Size] | Product[CategoryId] | Product[StyleId] |
|---|---|---|---|---|---|
| 1 | Prod1 | 蓝色 | 小型 | 1 | 1 |
| 2 | Prod2 | 蓝色 | 中等 | 2 | 2 |
| 3 | Prod3 | Red | 大型 | 1 | 1 |
| 4 | Prod4 | 蓝色 | 大型 | 2 | 2 |
| ProductCategory[CategoryId] | ProductCategory[CategoryName] |
|---|---|
| 1 | 电话 |
| 2 | 照相机 |
| 3 | TV |
| ProductStyle[StyleId] | ProductStyle[Finish] | ProductStyle[Polished] |
|---|---|---|
| 1 | 光泽 | 是 |
| 2 | 亚光 | 否 |
| 3 | 无 | 否 |
| Sales[SaleId] | Sales[ProductId] | Sales[Date] | Sales[Quantity] |
|---|---|---|---|
| 1 | 1 | 2012 年 1 月 1 日 0:00 | 10 |
| 2 | 2 | 2013 年 1 月 1 日 0:00 | 15 |