开发 PowerBI 视觉对象
Developing PowerBI Visuals
我发现很难全神贯注地从头开始开发 PowerBI 视觉对象。我正在阅读 wiki, guide, inspecting examples,但仍然觉得在理解它的内部工作原理方面存在巨大差距 - 它没有 'click'。 (我了解 D3 工作原理的基础知识,所以不太担心那部分)
问题:
我希望我没有要求太多,但是有人可以使用这个 barchart 作为例子,post 视觉源中的方法被调用的序列(以及如何数据转换并传递)当:
视觉对象已添加到 PowerBI 中的仪表板,
为视觉分配了一个类别和一个度量,
PowerBI 中的数据过滤器发生变化,
已选择自定义视觉对象上的一个元素。
您认为可能相关的选项
我使用这个特定的视觉对象作为示例,因为它被提到满足贡献新自定义视觉对象的最低要求,这听起来是一个很好的起点,source:
New Visual Development
Please follow our minimum requirements for implementing a new visual. See the wiki here.
(link 参考条形图教程)
但是,如果您有更好的视觉示例 - 请改用它。
这就是我得到的全部:
非常感谢。
对你的图形的一些评论。您显然正在使用视图模型(好):
- 在任何数据更改、过滤器更改或对象更改(图片中的格式)之后,将调用 visualTransform()。数据以奇怪的格式出现,因此需要重新打包(除了简单之外的任何东西)。这在此处完成,并返回开发人员定义的数据对象。我将此数据对象构建为数组,因为 d3 喜欢数组。
- update() 然后被调用(我认为你在图片中的箭头是错误的方式)。这有点棘手,因为 d3 交互现在开始发挥作用。如果您使用过 d3().enter(您可能已经使用过),那么它只会执行一次,因此在后续的 PBI update() 中只会执行 d3() 非输入指令。如果您将所有内容都放入 d3().enter 中,那么任何后续数据更新似乎都不会起作用。
- 或者,您可以 d3().remove() 并在每个 PBI update() 上重建 svg。这是否实用将取决于您的数据和视觉效果。
感谢您在记录流程方面的出色表现。 MS 文档目前非常蹩脚。
我还有一些额外的和更通用的补充:
- Power BI 使用
capabilities.json
结构来确定 a) 什么应该是数据窗格 (dataRoles
) 以及 Power BI 如何将该数据绑定到您的视觉 (dataViewMappings
) 和 b) 格式窗格中可以显示的内容(例如占位符)。
enumerateObjectInstances()
是 Power BI 用于初始化格式化窗格的可选方法。此方法返回的结构应等于 capabilities.json
文件中的结构。
update()
方法(必需)在您的视觉对象发生变化时被调用。除了数据绑定更改之外,调整视觉对象的大小或格式选项也会触发该方法。
visualTransform()
方法确实是一个内部方法,不是Power BI直接调用的方法。在 BarChart 的情况下,它由 update()
方法调用,因此箭头是正确的。大多数视觉对象都有某种方法,它用于将 Power BI DataView 结构转换为内部结构(有时转换为一些额外的计算)。
constructor
和 update()
方法都有参数(选项)为 Power BI 提供回调机制,例如 ISelectionManager
(通过 options.host.createSelectionManager()
),它改变视觉对象与其余 Power BI 视觉对象的交互。
自定义视觉对象与 Power BI 交互的结构从一开始就没有太大变化。只是有了新的 API 互动和可能性发生了变化:曾经是一个开放的世界,但现在是有限的。
希望这有助于您更好地了解 Power BI 自定义视觉对象。
-日本
我发现很难全神贯注地从头开始开发 PowerBI 视觉对象。我正在阅读 wiki, guide, inspecting examples,但仍然觉得在理解它的内部工作原理方面存在巨大差距 - 它没有 'click'。 (我了解 D3 工作原理的基础知识,所以不太担心那部分)
问题:
我希望我没有要求太多,但是有人可以使用这个 barchart 作为例子,post 视觉源中的方法被调用的序列(以及如何数据转换并传递)当:
视觉对象已添加到 PowerBI 中的仪表板,
为视觉分配了一个类别和一个度量,
PowerBI 中的数据过滤器发生变化,
已选择自定义视觉对象上的一个元素。
您认为可能相关的选项
我使用这个特定的视觉对象作为示例,因为它被提到满足贡献新自定义视觉对象的最低要求,这听起来是一个很好的起点,source:
New Visual Development
Please follow our minimum requirements for implementing a new visual. See the wiki here.
(link 参考条形图教程)
但是,如果您有更好的视觉示例 - 请改用它。
这就是我得到的全部:
非常感谢。
对你的图形的一些评论。您显然正在使用视图模型(好):
- 在任何数据更改、过滤器更改或对象更改(图片中的格式)之后,将调用 visualTransform()。数据以奇怪的格式出现,因此需要重新打包(除了简单之外的任何东西)。这在此处完成,并返回开发人员定义的数据对象。我将此数据对象构建为数组,因为 d3 喜欢数组。
- update() 然后被调用(我认为你在图片中的箭头是错误的方式)。这有点棘手,因为 d3 交互现在开始发挥作用。如果您使用过 d3().enter(您可能已经使用过),那么它只会执行一次,因此在后续的 PBI update() 中只会执行 d3() 非输入指令。如果您将所有内容都放入 d3().enter 中,那么任何后续数据更新似乎都不会起作用。
- 或者,您可以 d3().remove() 并在每个 PBI update() 上重建 svg。这是否实用将取决于您的数据和视觉效果。
感谢您在记录流程方面的出色表现。 MS 文档目前非常蹩脚。
我还有一些额外的和更通用的补充:
- Power BI 使用
capabilities.json
结构来确定 a) 什么应该是数据窗格 (dataRoles
) 以及 Power BI 如何将该数据绑定到您的视觉 (dataViewMappings
) 和 b) 格式窗格中可以显示的内容(例如占位符)。 enumerateObjectInstances()
是 Power BI 用于初始化格式化窗格的可选方法。此方法返回的结构应等于capabilities.json
文件中的结构。update()
方法(必需)在您的视觉对象发生变化时被调用。除了数据绑定更改之外,调整视觉对象的大小或格式选项也会触发该方法。visualTransform()
方法确实是一个内部方法,不是Power BI直接调用的方法。在 BarChart 的情况下,它由update()
方法调用,因此箭头是正确的。大多数视觉对象都有某种方法,它用于将 Power BI DataView 结构转换为内部结构(有时转换为一些额外的计算)。constructor
和update()
方法都有参数(选项)为 Power BI 提供回调机制,例如ISelectionManager
(通过options.host.createSelectionManager()
),它改变视觉对象与其余 Power BI 视觉对象的交互。
自定义视觉对象与 Power BI 交互的结构从一开始就没有太大变化。只是有了新的 API 互动和可能性发生了变化:曾经是一个开放的世界,但现在是有限的。
希望这有助于您更好地了解 Power BI 自定义视觉对象。
-日本