Forum Discussion
How to alter capabilities.json to have 4 inputs for values?
- 8 years ago
{ "dataRoles": [ { "displayName": "Category", "name": "Category", "kind": "Grouping" }, { "displayName": "Values1", "name": "Values1", "kind": "Measure" }, { "displayName": "Values2", "name": "Values2", "kind": "Measure" }, { "displayName": "Values3", "name": "Values3", "kind": "Measure" }, { "displayName": "Values4", "name": "Values4", "kind": "Measure" } ], "dataViewMappings": [ { "categorical": { "categories": { "for": { "in": "Category" } }, "values": { "select": [ { "for": { "in": "Values1" } }, { "for": { "in": "Values2" } }, { "for": { "in": "Values3" } }, { "for": { "in": "Values4" } } ] } } } ] }Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
why don't you simply use Table instead of categorical ? otherwise I think what you are looking for is serie.
{
"dataRoles": [
{
"displayName": "Category",
"name": "Category",
"kind": "Grouping"
},
{
"displayName": "Values1",
"name": "Values1",
"kind": "Measure"
},
{
"displayName": "Values2",
"name": "Values2",
"kind": "Measure"
},
{
"displayName": "Values3",
"name": "Values3",
"kind": "Measure"
},
{
"displayName": "Values4",
"name": "Values4",
"kind": "Measure"
}
],
"dataViewMappings": [
{
"categorical": {
"categories": {
"for": {
"in": "Category"
}
},
"values": {
"select": [
{
"for": {
"in": "Values1"
}
},
{
"for": {
"in": "Values2"
}
},
{
"for": {
"in": "Values3"
}
},
{
"for": {
"in": "Values4"
}
}
]
}
}
}
]
}
Ignat Vilesov,
Software Engineer
Microsoft Power BI Custom Visuals
- Maikeru8 years ago
Helper II
I am beginning to design custom visuals and am interested by this data scheme.
Once the capabilities.json is set, how would you extract each Value 1, 2, 3, 4 into the visual.ts file?
I understand that the dataViews method is able to fetch user data but I can't figure out the correct syntax to pick each specific node.
Sorry for this newbie question. I am also just starting with TS.
Thank you in advance for your guidance.
Best regards
Michael
- Anonymous8 years agoNot applicable
let valColumnName = metadata.columns.filter(c => c.roles["value1"])[0].displayName;
let valColumnIndex = metadata.columns.filter(c => c.roles["value1"])[0].index;I hope this helps you !
- ysapiyev8 years ago
Responsive Resident
let dv = options.dataViews; let view = dv[0].categorical; let values1 = view.values[0]; let values2 = view.values[1]; let values3 = view.values[2]; let values4 = view.values[3];
This should help.
Regards,
Yerkhan
- Maikeru8 years ago
Helper II
Thank you very much, v-viig!
Really appreciate your time helping me out.
I tried to implement the piece of code you sent me, but I am not able to retrieve the data to the viz.
As you can see below, I tried to substitute the fetched data with some static one (value_array) and in the latter case, the visual displays properly.
Is there something obvious that I missed?
function visualTransform(options: VisualUpdateOptions, host: IVisualHost) { let dataInfo = { dataPoints: [], dataMax: 0 }; let dataPoints = []; let dataMax: number; let dv = options.dataViews; let view = dv[0].categorical; let values1 = view.values[0]; let values2 = view.values[1]; let values3 = view.values[2]; let values4 = view.values[3]; //let value_array = [values1,values2,values3,values4,values5]; let value_array = [100,10,8,120]; for (let i = 0; i < 4; i++) { dataPoints.push({ category: "test" + i, value: view.values[i] //value: value_array[i] }); } dataMax = 130; return { dataPoints: dataPoints, dataMax: dataMax }; }Best regards
Michael