创建可视化效果时,视觉对象将根据分配的数据字段呈现。 本文介绍如何使用 Power BI 报表创作 API 与数据字段交互,并将其分配给数据角色。 若要确定视觉对象具有哪些数据角色,请使用 getCapabilities 方法。
添加数据字段
若要向视觉对象数据角色添加数据字段,请调用视觉对象的 addDataField 方法。
addDataField(dataRole: string, dataField: models.IBaseTarget, index?: number): Promise<models.IError>
此方法具有以下变量:
-
dataRole- 应向其分配数据字段的数据角色的名称。dataRole参数等效于数据角色name属性。 若要检索可用的数据角色和名称,请使用getCapabilities方法。 -
dataField- 要添加到数据角色的数据字段。 数据字段是一个目标对象,可以是包含聚合、度量值、层次结构或具有聚合的列。 有关目标的详细信息,请参阅 使用目标选择要对执行哪些数据字段。 -
index(可选) - 应在其中添加数据字段的索引。 默认行为是最后添加字段。
例如:
const dataField = {
$schema: "http://powerbi.com/product/schema#column",
table: "Store",
column: "Name"
};
await visual.addDataField('Category', dataField);
获取数据字段
若要获取数据角色中定义的数据字段的列表,请调用视觉对象的 getDataFields 方法。 该列表将同时包含隐藏字段和可见字段。
getDataFields(dataRole: string): Promise<models.IBaseTarget>
此方法具有 dataRole 变量,该变量是从中检索数据字段的数据角色的名称。
例如:
let dataField = await visual.getDataFields('Category');
删除数据字段
若要删除应用于数据角色的数据字段,请调用视觉对象的 removeDataField 方法。
removeDataField(dataRole: string, index: number): Promise<models.IError>
此方法具有以下参数:
-
dataRole- 与数据字段关联的目标数据角色的名称。 -
index- 要删除的数据字段的索引。
例如:
await visual.removeDataField('Category', 2);
若要获取数据字段的索引,可以在 getDataFields 结果数组中使用目标索引。
设置数据字段的可见性
若要控制数据字段的可见性,请使用 setFieldHidden 视觉对象上的方法。 只能隐藏或显示聚合字段、度量值和视觉计算。 此作相当于在视觉计算编辑模式下切换字段可见性。
setFieldHidden(dataRole: string, index: number, isHidden: boolean): Promise<models.IError>
此方法具有以下参数:
-
dataRole- 与数据字段关联的目标数据角色的名称。 -
index- 要隐藏或取消隐藏的数据字段的索引。 -
isHidden- 用于确定应隐藏位置的布尔值
例如:
await visual.setFieldHidden('Values', 0, /*isHidden*/ true);
设置数据字段的格式字符串
若要设置特定字段中显示的数据的格式,请调用 setFieldFormatString 视觉对象的方法。
setFieldFormatString(dataRole: string, index: number, formatString: string): Promise<models.IError>
此方法具有以下参数:
-
dataRole- 与数据字段关联的目标数据角色的名称。 -
index- 要设置格式字符串的数据字段的索引 -
formatString- 需要 .NET 格式字符串
例如:如果希望字段中的每一个值都以 $ 开头,请执行以下作:
await visual.setFieldFormatString('Values', 0, /*formatString*/ "$0.00");
获取数据字段的格式字符串
若要检索字段的格式字符串,请调用 getFieldFormatString 视觉对象的方法。
getFieldFormatString(dataRole: string, index: number): Promise<string>
此方法具有以下参数:
-
dataRole- 与数据字段关联的目标数据角色的名称。 -
index- 用于获取格式字符串的数据字段的索引
let formatString = await visual.getFieldFormatString('Values', 0);
获取数据字段的名称
视觉对象中的每个字段都具有派生自其显示名称的唯一名称。 此唯一标识符用于在创建视觉计算时引用 DAX 表达式中的字段。 若要检索此唯一名称,请调用 getDataFieldName 视觉对象的方法。
getDataFieldName(dataRole: string, index: number): Promise<string>
此方法具有以下参数:
-
dataRole- 与数据字段关联的目标数据角色的名称。 -
index- 要获取字段名称的数据字段的索引
let dataFieldName = await visual.getDataFieldName('Values', 0);
let visualCalcDax = `RUNNINGSUM([${dataFieldName}])`;