How do I merge two Dashboard data sources in grafana - grafana

I would like to re-use a query between panels -- ideally between library panels.
Context:
I have three Postgres datasources. For simplicity, say A contains ecommerce behavior, B contains app behavior, and C contains user profile data.
I have a query on source C that helps me determine if the user is an enterprise, paid, or free user. Call the query Q.
Situation:
I am trying to filter out enterprise users from queries on A and B. So I need to apply Q to these tables.
Attempt at solution:
I have two library panels where I set the Data source -- Mixed --. In the first panel, I make a query to datasources A and C. In the second panel, I make queries to B and C. Note I am using query Q in both cases.
Woohoo!
Problem:
I would like to define Q exactly once to help future-proof changes.
Ideally, I would be able to use a Dashboard data source in a -- Mixed -- context. How do I merge two -- Dashboard -- sources?

Maybe these can help you
https://grafana.com/docs/grafana/v9.0/dashboards/json-model/
https://grafana.com/docs/grafana/v9.0/dashboards/scripted-dashboards/
The basic idea is, make sure that you correctly set the gridPos and datasource properties in a way that make sense; and you can merge as many dashboards as you want by taking the panels (as mentioned in the docs, panels is an array of JSON that represents building blocks of the dashboard).
Hope it helps. I'm working exactly on the same right now.

Related

Share kusto variables between grafana panels

Well, let's say that I have the query from my previous question: How to do multi graph time series on Grafana with Kusto
Then I'd like to consume the tiemposCicloBruto variable from one panel to another in order to avoid repeating queries.
I saw: https://grafana.com/blog/2020/10/14/learn-grafana-share-query-results-between-panels-to-reduce-load-time/
But there isn't any way to share variables at all...
I also tried it as a dashboard variable, but it doesn't seem to support tabular expressions at all...
You can share only input variables across dashboard panels. Variables work as primitive text substitution in one direction (from dashboard to query), and do not take into account any context in your query language.
Your link tells about sharing results of the query between different panels. If exact same result set returned to a panel fits your needs, you can reuse it "for free", without putting load on the database. You don't need to save it into any variable, you just set it as a pseudo-datasource and you get the result immediately.
You can factor this feature into design of you panels. Examples could be:
time series plus histogram visualizations of the same data;
time-series chart plus a panel with latest readings (or use other Grafana reduce expressions).

Change Properties of multiple diagrams in Enterprise Architect

I would like to change the properties of multiple diagrams together rather than clicking on them one by one. Does anyone know how this can be achieved?
You can use the scripting facility of Enterprise Architect to loop the diagrams you would like to change and update them.
See this section of the manual to get help.
There is a bunch of example scripts included with EA, either from the local scripts, or from the EAScriptLib MDG.
Another source of examples is my Github repository: https://github.com/GeertBellekens/Enterprise-Architect-VBScript-Library
You could write a SQL to manipulate your database. t_diagram.PDATA holds a long cryptic string where one part is ScalePI=0; (which is the default for no scaling). You can alter that to be ScalePI=1; (meaning scale to one page).
String manipulations vary from database to database. So you need to write your own which you can execute in a script using
Repository.Execute("UPDATE t_diagram ...")
Note that you should test this in a sandbox first since invalid SQLs can easily disrupt your whole repository.

Tableau performance

I've a problem with the dashboard in Tableau. In the dashboard there are many worksheets, and all the columns that are in the report are calculable. The problem is that dashboard is being formed for a very long time. The report contains approximately 2 million rows. And it is generated about 5 minutes.
Tell me, what are the solutions in this case?
Maybe I can somehow adjust the page display and not all the records at once?
To reduce the calculation time, try to exclude data you don't need with a data source filter in tableau. You can also hide or delete unused calculated fields. Other things you can do is reduce sheets that are not used.
Here's a link: https://www.tableau.com/about/blog/2016/1/5-tips-make-your-dashboards-more-performant-48574
Steps to follow to reduce calculation time:
Extract the data and use Extract data and also keep option as extract instead of live.Also replace the data source using extract data.
Use "User Filter" to reduce calculation time so that tableau will display of particular user data only.
I hope this will work to solve your problems.
I have one more idea to resolve this issue.
1)when you loan first time your dashboard put into Dashboard Action Filter
First Time load dashboard data exclude in your sheet.
Dashboard Menu->Action->add action->select sheet and exclude option.
2) Live to Extract data source and select radio button extract.
3)use user filter.
I am following the other answers (use extract, dashboard action filter...) and I want to add one point:
Drag every field used by any tablesheet on the dashboard on "Detail" of every tablesheet you are using on the Dashboard. Now Tableau loads all needed data while loading the first tablesheet and can use this data for the other sheets.
i.e. A dashboard contains three tablesheets (A, B, C) now you drag every field used by A on "Deatil" of B and C, every field used by B on "Deatil" of A and C, every field used by C on "Deatil" of B and A.
We are also having a similar issue with 150 million rows but I want to check if you are doing following steps. This may help you. This goes back to fundamentals of Tableau reporting.
1/ Try to make sure your data set is in star schema format. This will help a lot in report.
2/ Try to have tables and views in DB in such a way that same columns are used in Tableau. Any extra columns in tables adds to the performance issue.
3/Make sure indexing is done properly for all the fields that are joined.
4/ In my experience Dashboard adds extra performance lag. So make sure you try to get as much performance tuning on sheets as possible before even going to dashboard.
5/ If required try to use materialized views.
hope this helps.
Try to capture performance metrics using performance recorder option in Tableau.
Check for the underlying DB tables and joins present on the data source layer.
Try using optimized sets and parameters as required and get rid of less relevant filters.
Try using data extracts with scheduled refresh with data source filter for limited business years data.

How to show data from two different datasources in Activereport

I have a report file . I have to show the data in this report from two different datatable . I have to show the data from one datatable after another . I don't want to use sub report . Is there another way to solve it?
With Regards
The way to solve this with ActiveReports is with a subreport. Other than using subreports, you could use the "unbound mode" to programmatically combine the records from both datatables into a single rowset. See this walkthrough for an example of using unbound mode (see the DataInitialize and FetchData events for the meat of the matter).
It is difficult to say for sure how best to go about this without more information though. For example, some info that might useful:
Are the data tables in the DataSet?
Are the datatables joinable? In other words, is there a relation between them?
Why don't you want to use subreports? This is truly the way a banded report writer like ActiveReports is meant to handle multiple data sources.
Also, you might check out our Data Dynamics Reports product. It uses a different paradigm than banded reports where you lay out data regions (e.g. table, chart, etc.) on a page. Each data region can be bound to a separate data source without using a subreport. Maybe that would be a better fit for what you need.
Scott Willeke
GrapeCity inc.

Reporting within CQRS

I'm trying understand CQRS to see if it can help out in an reporting environment.
Problem: An CQRS designed system is already in production, happily generating commands, events and updating the necessary query views. A new report is required. This report takes a number of parameters; Start Date, End Date, Product Type, and Product Category.
How do I generate the aggregate views for:
A query store that will initially be empty
And, can pass parameters with very different values
Do I try and solve this using a CQRS approach, or is there a better alternative?
Thanks
If it is not reasonable to precompute all your report data into flat view, then just don't do that. You may want to join a bunch of tables for your report. It's your decision what can be precomputed, and what is not worth it (cpu, storage considerations).
In your particular case (StartDate, EndDate,..) - i can't see what is the problem to generate a single ViewModel table for it, and just query directly against the parameters.
Figure out which events are required to gather all report data.
Query all those events, republish them to the endpoint that handles updating the new report table(s).
Wait until all events have been processed.
Put some indexes on the columns that will function as report query criteria.
Done!