Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hi,
I want to make a custom visual with just two columns, one for text and other for a link button.
Ho can I define the dataview model.? I couldnot find any doc that defines a dataview for Table like one for Categorical
dataViewMappings: [{
categorical(Table?): {
categories: {
for: { in: 'Category' },
dataReductionAlgorithm: { top: {} }
},
values: {
select: [{ bind: { to: 'Message' } }]
},
}
}],
How can I achieve this?
Thank you.
Solved! Go to Solution.
Basically, if your dataRoles array is defined as follows:
dataRoles: [ { displayName: 'Title', name: 'title', kind: powerbi.VisualDataRoleKind.Grouping }, { displayName: 'Url', name: 'url', kind: powerbi.VisualDataRoleKind.Grouping } ]
Then your dataViewMappings array should look like this(I omitted the conditions[] array for clarity):
dataViewMappings: [{ table: { rows: { select: [{for: { in: 'title' }},{for: { in: 'url' }}] } } }]
The above will result in:
1. There will be two field wells displayed in Power BI, titled "Title" and "Url".
2. Your dataViews[index] object will have the following properties(among others...):
Note that while the "columns" property is belongs to the table object, the other three are actually in its prototype.
A personal recommendation would be to log the dataView to the console and go through it yourself, and maybe play with the different mapping options. It's currently the best way I know to understand how these things work(Due to lack of documentation).
Also, note that you cannot have link buttons inside Power BI visuals. This is a security measure(called Sandboxing) taken by Microsoft, since it can be used to perform various malicious actions, such as Clickjacking and Cross-Site Scripting attacks, which is not something you want to be possible anywhere near your precious confidential corporate data.
Basically, if your dataRoles array is defined as follows:
dataRoles: [ { displayName: 'Title', name: 'title', kind: powerbi.VisualDataRoleKind.Grouping }, { displayName: 'Url', name: 'url', kind: powerbi.VisualDataRoleKind.Grouping } ]
Then your dataViewMappings array should look like this(I omitted the conditions[] array for clarity):
dataViewMappings: [{ table: { rows: { select: [{for: { in: 'title' }},{for: { in: 'url' }}] } } }]
The above will result in:
1. There will be two field wells displayed in Power BI, titled "Title" and "Url".
2. Your dataViews[index] object will have the following properties(among others...):
Note that while the "columns" property is belongs to the table object, the other three are actually in its prototype.
A personal recommendation would be to log the dataView to the console and go through it yourself, and maybe play with the different mapping options. It's currently the best way I know to understand how these things work(Due to lack of documentation).
Also, note that you cannot have link buttons inside Power BI visuals. This is a security measure(called Sandboxing) taken by Microsoft, since it can be used to perform various malicious actions, such as Clickjacking and Cross-Site Scripting attacks, which is not something you want to be possible anywhere near your precious confidential corporate data.
I am not aware of a way to have a link button in a visual currently.
@Greg_Deckler I could create a link button using SVG and on click it was redirecting.
this.htmlContents = d3.select(options.element.get(0)).append("svg")
.attr("width",400)
.attr("height", 200);
this.htmlContents.append("a").attr("xlink:href", "http://en.wikipedia.org/wiki/")
.append("rect")
.attr("x", 100)
.attr("y", 50)
.attr("height", 100)
.attr("width", 200)
.style("fill", "lightgreen")
.attr("rx", 10)
.attr("ry", 10);
this.htmlContents.append("text")
.attr("x", 200)
.attr("y", 100)
.style("fill", "black")
.style("font-size", "20px")
.attr("dy", ".35em")
.attr("text-anchor", "middle")
.style("pointer-events", "none")
.text("Resolve");
But when I added the same to a table cell, errror occurs "Refused to display "https://app/powerbi.com/www/wiki.org" in a frame because it set X-Frame-Opttions to deny
"
User | Count |
---|---|
15 | |
2 | |
1 | |
1 | |
1 |
User | Count |
---|---|
18 | |
11 | |
5 | |
4 | |
3 |