语义模型中的语义数据传播

语义模型读入 FabricDataFrame 时,语义模型中的元数据和注释等语义信息会自动附加到 FabricDataFrame。 在本文中,你将了解 SemPy Python 库如何保留附加到语义模型的表和列的注释。

pandas 用户的语义传播

SemPy Python 库是语义链接功能的一部分,它服务于 pandas 用户。 SemPy 支持 pandas 允许对数据执行的操作。

借助 SemPy,还可以从进行操作的语义模型传播语义数据。 通过传播语义数据,可以在执行切片、合并和串联等操作时,保留附加到语义模型中的表和列的注释。

可以通过以下两种方式之一创建 FabricDataFrame 数据结构

  • 可以将表或度量值的输出从语义模型读取到 FabricDataFrame 中。

    从语义模型读取到 FabricDataFrame 时,Power BI 中的元数据会自动补充或填充 FabricDataFrame。 换句话说,FabricDataFrame 会保留来自模型表或度量值的语义信息。

  • 可以使用内存中数据来创建 FabricDataFrame,就像对 pandas DataFrame 所做的操作一样。

    从内存中数据创建 FabricDataFrame 时,需要提供语义模型的名称,FabricDataFrame 可以从中拉取元数据信息。

SemPy 保留语义数据的方式因正在执行的操作和所操作的 FabricDataFrame 的顺序等因素而异。

使用合并进行语义传播

合并两个 FabricDataFrame 时,DataFrame 的顺序决定了 SemPy 传播语义信息的方式。

  • 如果同时注释了两个 FabricDataFrame,则左侧 FabricDataFrame 的表级元数据优先。 同样的规则也适用于单个列;左侧 FabricDataFrame 中的列注释优先于右侧 DataFrame 中的列注释。

  • 如果只注释了一个 FabricDataFrame,则 SemPy 使用其元数据。 同样的规则也适用于单个列;SemPy 使用已注释的 FabricDataFrame 中的列注释。

使用串联的语义传播

对多个 FabricDataFrame 执行串联时,对于每一列,SemPy 将从与列名称匹配的第一个 FabricDataFrame 复制元数据。 如果有多个匹配项且元数据不同,则 SemPy 会发出警告。

还可以通过将 FabricDataFrame 放在首位来传播 FabricDataFrame 与常规 pandas DataFrame 的串联。

Spark 用户的语义传播

语义链接 Spark 本机连接器会补充(或填充)Spark 列的元数据字典。 目前,对语义传播的支持受限,并受 Spark 的架构信息传播方式内部实现的约束。 例如,列聚合将会去除元数据。