
[Azure PL300 Certified] 怎么选择Power BI模型
在 Power BI Desktop 中开发 Power BI 模型并将其发布到 Power BI 服务中的工作区后,该模型称为数据集。数据集是一个 Power BI 项目,它是 Power BI 报表和仪表板中可视化效果的数据源。要完成Power BI 某一个报表或者仪表板必须查询某个数据集。当 Power BI 可视化数据集数据时,它会准备并发送一个分析查询。分析查询从模型生成查询结果,该结果
Power BI 模型
Power BI 数据模型是针对分析进行优化的可查询数据资源。 报表可以使用以下两种分析语言之一来查询数据模型:数据分析表达式 (DAX) 或多维表达式 (MDX)。 Power BI 使用 DAX,而分页报表可以使用 DAX 或 MDX。 “在 Excel 中分析”功能使用 MDX。
数据模型也称作语义模型,尤其是在企业方案中。 通常,在数据介绍内容和本模块的语境中,数据模型简称为模型。
什么是Power BI数据集
在 Power BI Desktop 中开发 Power BI 模型并将其发布到 Power BI 服务中的工作区后,该模型称为数据集。 数据集是一个 Power BI 项目,它是 Power BI 报表和仪表板中可视化效果的数据源。
什么是分析查询
要完成Power BI 某一个报表或者仪表板必须查询某个数据集。 当 Power BI 可视化数据集数据时,它会准备并发送一个分析查询。 分析查询从模型生成查询结果,该结果很容易理解,尤其是已可视化的情况下。
分析查询包括按以下顺序执行的三个阶段:
- 筛选(切片)
将查询范围缩小为一部分模型数据,在 Power BI 报表中,可以在报表、页面或视觉对象级别设置筛选器。 - 分组(切块)
将查询结果划分为组。 每个组也是一个筛选器,但与筛选阶段不同,筛选器值在查询结果中可见。 例如,按客户分组会按客户筛选每个组。 - 汇总
生成单值结果。 通常,报表视觉对象使用聚合函数来汇总数字字段。 聚合函数包括 sum、count、minimum、maximum 等。 可以通过聚合列来实现简单汇总,也可以通过使用 DAX 公式创建度量来实现复杂汇总。
表格模型
Power BI 模型是一种表格模型。 表格模型由一个或多个包含列的表组成。 它还可以包含关系、层次结构和计算。
表存储模式
每个 Power BI 模型表(计算表除外)都有一个存储模式属性。 存储模式属性可以是“导入”、“DirectQuery”或“双重”,它决定了表数据是否存储在模型中。
- 导入 – 查询将检索模型中存储或缓存的数据。
- DirectQuery – 查询将传递到数据源。
- 双重 – 查询将检索存储的数据,或传递到数据源。 Power BI 将确定最有效的计划,并尽可能使用缓存的数据。
Power BI模型框架
Power BI包含以下模型框架
- 导入模型:包含存储模式属性设置为“导入”的表。
- DirectQuery 模型:包含存储模式属性设置为“DirectQuery”的表,这些表属于同一个源组。 本模块将在后面的部分介绍源组。
- 复合模型:包含多个源组。
什么时候使用导入模型
设计report的时候尽可能选择导入模型框架。 此框架提供最多的选择、设计灵活性和快速性能。
导入模型的优势
- 支持所有 Power BI 数据源类型,包括数据库、文件、源、网页、数据流等。
- 可以集成源数据。 例如,一个表将关系数据库用作数据源,而相关的表将网页用作数据源。
- 支持所有 DAX 和 Power Query (M) 功能。
- 支持计算表。
- 提供最佳查询性能。 这是因为,模型中缓存的数据已针对分析查询(筛选、分组和汇总)进行优化,并且模型完全存储在内存中。
导入模型提供最多的选项和最高的设计灵活性,同时提供优异的性能。 PowerBI将以下获取数据的方式默认为导入模型:
导入模型的劣势
导入模型的劣势与模型大小和数据刷新有关。
- 模型大小
Power BI 施加数据集大小限制,以便限制模型的大小。 将模型发布到共享容量时,每个数据集的大小限制为 1-GB。 如果超过此大小限制,将无法刷新该数据集。 将模型发布到专用容量(也称为高级容量)时,如果为容量启用了大型数据集存储格式设置,该模型可以会增长到 10 GB 以上。
所以,使用导入模型时,应该努力减少表中存储的数据量,有助于减少模型刷新的持续时间并加快模型查询。主要可以使用以下方法:
- 删除不必要的列
- 删除不必要的行
- 分组和汇总以提高事实数据表的粒度
- 优先使用数值数据,以优化列数据类型
- 优先使用 Power Query 中的自定义列,而不是模型中的计算列
- 禁用 Power Query 查询负载
- 禁用自动日期/时间
- 使用 DirectQuery 表存储,如本模块后面的单元中所述。
- 数据刷新
导入的数据必须定期刷新。 数据集数据的新旧状态只与上次成功刷新数据时的状态一致。 若要使数据保持最新,可以设置计划数据刷新,或者报表使用者可以执行按需刷新。
Power BI 对计划刷新操作的执行频率施加限制。 在共享容量中每日最多可执行 8 次,在专用容量中每日最多可执行 48 次。默认情况下,若要刷新某个表,Power BI 会删除所有数据,然后重新加载该表。
什么时候使用DirectQuery 模型
如果你的数据源存储大量数据和/或报表需要提供准实时数据,请选择 DirectQuery 模型框架。
DirectQuery 模型包含存储模式属性设置为“DirectQuery”的表,这些表属于同一个源组。
源组是与数据源相关的一组模型表。 分为两种类型:
- 导入 – 表示所有导入存储模式表(包括计算表)。 一个模型中只能有一个导入源组。
- DirectQuery – 表示与特定数据源相关的所有 DirectQuery 存储模式表。
DirectQuery 模型的优势
- 为大型或快速变化的数据源建模
由于 DirectQuery 表不需要刷新,因此它们很适合用于大型数据存储,例如数据仓库。 将整个数据仓库导入到模型是不切实际且低效的做法,甚至根本做不到。 当源数据快速变化而用户需要查看最新数据时,DirectQuery 模型可以提供准实时的查询结果。
当报表查询 DirectQuery 模型时,Power BI 会将这些查询传递到基础数据源。
- 强制实施源 RLS
当源数据库强制实施行级安全性 (RLS) 时, 源数据库不会在 Power BI 模型中复制 RLS 规则,而是强制实施其规则。 此方法仅适用于某些关系数据库,它涉及到为数据集数据源设置单一登录。
- 数据主权限制
如果你的组织实施了限制数据离开所在地的安全策略,则无法导入数据。 可能适合使用连接到本地数据源的 DirectQuery 模型。
- 创建专用数据集
DirectQuery 模式支持关系数据库源。因为Power BI 必须将分析查询转换为数据源可以理解的本机查询。
但是,可以采用一种非常有效的替代做法。 你可以连接到 Power BI 数据集(或 Azure Analysis Services 模型),并将其转换为 DirectQuery 本地模型。 本地模型是描述一个模型与另一个模型的关系的相关术语。 在这种情况下,原始数据集是远程模型,新数据集是本地模型。 这些模型链接在一起,“链接”是用于描述相关模型的术语。 通过这种方式,最多可以链接三个模型。
这种链接模型的功能支持个性化和/或扩展远程模型的潜力。 可以执行的最简单操作是将对象(例如表或列)重命名,或者向本地模型添加度量。 还可以使用计算列或计算表来扩展模型,或者添加新的导入表或 DirectQuery 表。 但是,这些扩展会导致创建新的源组,这意味着,模型将变成复合模型。
DirectQuery模型的劣势
-
并非所有数据源都受支持。 通常,仅支持主要关系数据库系统。 也支持 Power BI 数据集和 Azure Analysis Services 模型。
-
并非可以执行所有 Power Query (M) 转换,因为这些查询必须转换为源系统可以理解的本机查询。 因此,举例来说,无法使用透视或逆透视转换。
-
分析查询性能可能不佳,尤其是在源系统未优化(使用索引或具体化视图)或分析工作负载的资源不足的情况下。
-
分析查询可能会影响源系统的性能。 这可能导致所有工作负载(包括 OLTP 操作)的体验变慢。
你可以通过数据源优化和将用户定义的聚合表添加到 DirectQuery 模型的方式来进行一些优化
更多推荐
所有评论(0)