Closed andrew-danieli-fj closed 4 months ago
Hi there,
You are indeed asking for complicated examples to reference from, as node and edge data is particularly involved (especially in Power BI). I don't have the bandwidth to assist with language specifics, as I focus on developing and maintaining the tooling, so some of the locations detailed on Deneb's support page for seeking help may provide you with more readily available assistance. Some of those folks do periodically check this repo so I'll provide some quick starters and leave the issue open in case they're able to assist further.
Hi,
Thanks very much for the detailed response, and for producing such a great visual. I did some further digging and found a previous Deneb GitHub issue which highlighted the "1 query/dataset" limitation for the link between Power BI and certified visuals which I didn't know about. I am, for now, limited to certified visuals so will persevere with trying to transform the data into something suitable for Deneb/Vega to handle. It would be nice if Deneb could take a Json object as an alternative input so that the transformation of the data could be handled by Power BI. Like you I'm more a developer than visualiser and this is my first foray into that world.
We couldn't unfortunately standardize an additional data role for a separate input, as it still has to be mapped to every row in the query by Power BI and this would perhaps create more overhead for the end-user in these cases.
That being said, I have personally, done this using a measure in the existing dataset and transformed it into something else (just taking the first row's field value and then working with that). I ended up using CSV data as it was easier to parse and TOJSON didn't work well with more than 10 rows, performance-wise. You may get some mileage from this approach if you can afford the performance hit on the query that Power BI runs.
We'd probably also need to think about how to validate when the data view is processed (as Power BI doesn't have JSON data types and we'd have to parse a string value to JSON) and structure this so that it's clear for templates what structure would be a valid input for any other consumers. We could probably dynamically generate a schema for this on the fly and make this part of the template but would be a breaking change for 1.x's template format.
I feel that given the current limitations of Power BI visuals, the 'correct' way would be to allow a conditional formatting property that could accept such a measure as an input. That would be treated as a scalar value by the visual and may have much less overhead. However, we would still have to think about how this would work in templates if it were to become a supported feature. We would need to at least (a) find a way to flag that an external measure dependency is needed in the visual properties and (b) that it should be a string that parses to valid JSON and match a particular schema for the template to validate correctly for the creator's intended use.
Anything that is going to have an effect on the template structure is slated for v2.0 in terms of when I can do the work, as it needs re-designing and may be a breaking change. I want to factor in how to manage additional model-based dependencies like drilldown and field parameters as this will require similar changes to the template format. I can keep this issue open to consider how this may work when the time comes, but I don't anticipate getting to this until later this year; I have 1.6 - 1.9 to get done first as these will contain most of the current asks outside of templating and will hopefully allow this templating work to be done in as targeted a manner as possible.
Closing due to lack of activity. If you need further language assistance, I recommend approaching one of the community support representatives via one of their preferred channels.
I'm looking for some advice on how best to implement a mind-map style visualisation similar to the "dataflow viewer" built into the vega/vega-lite online editor (e.g. rectangular nodes with text and directed arrows between them).
Any pointers or simple examples would be a great help.
Thanks