powerbi-dataview-transformer v1.6.4
Power BI Dataview Transformer
It's not very easy to parse the dataview coming from Power BI Custom Visuals.
This library helps you transform the dataview object into an array of objects that is defined in your capabilities json.
For Example:
{
"dataRoles": [
{
"displayName": "Width Data",
"name": "width",
"kind": "Measure"
},
{
"displayName": "Target Height Data",
"name": "targetHeight",
"kind": "Measure"
},
{
"displayName": "Actual Height Data",
"name": "actualHeight",
"kind": "Measure"
},
{
"displayName": "Label Name",
"name": "name",
"kind": "Grouping",
"preferredTypes": [
{
"text": true
}
]
}
],
...
}The Transformed array will look like this
[
{name: 'One', actualHeight: 10, targetHeight: 100, width: 15},
{name: 'One', actualHeight: 20, targetHeight: 200, width: 25},
{name: 'One', actualHeight: 30, targetHeight: 300, width: 35},
{name: 'One', actualHeight: 40, targetHeight: 400, width: 45}
]How to Use
To Install: npm install --save powerbi-dataview-transformer
- In
pbiviz.json, Add"node_modules/powerbi-dataview-transformer/dist/index.js"underExternalJSarray. - In
tsconfig.json, Add"node_modules/powerbi-dataview-transformer/types.d.ts"underfilesarray. - Then in your
visual.ts:
interface Window {
d3: typeof d3;
_: typeof _;
dataviewTransformer: typeof dataviewTransformer; // <-- this line
}
class Visual {
...
type Datum = {
name: string,
actualHeight: number,
targetHeight: number,
width: number
}
public update(options: VisualUpdateOptions) {
// parse data
const dataView: DataView = options.dataViews[0]
const transformedData = window.dataviewTransformer.categoryTransform<Datum>(dataview, "id") // <-- "name" is the category that you want to select from your capabilities.json
// transformedData = [{name: 'One', width: 15, targetHeight: 100, actualHeight: 10}, ...]
}
}API Doc
categoryTransform Function
Parameters
dataview (required) This is the dataview that is in the options object passed into the
updatefunction. Usually the dataview is found inoptions.dataviews[0]inside theupdatefunction.category name (required) This is the value of
nameproperty of the category is defined in thecapabilities.jsonfile underdataRoles. The returned array is going to be an array of data objects that is based on this catagory.SelectionIdBuilder (optional) SelectionIdBuilder is the function that exists in the
optionsobject that is passed in theconstructorfunction. Since we need to pass this function in theupdatefunction. One approach is to create store theSelectionIdBuilderin a class property, then use it in this function
Returns
- The function will return an array that is strongly typed to the datum shape you defined in your custom visual.