當您建立視覺效果時,視覺效果會根據指派的數據欄位來呈現。 本文說明如何使用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}])`;