Chartbreak on specific row count (large datasets) - jasper-reports

Is there a possibility to create a new chart if a specific number of rows is reached?
Lets say i have 150 entries in my dataset, but the chart is only readable with 50 entries each. How could i do that?
PS: To the Editor i'm working with dynamic-reports which use jasper-reports.

I figured out the following workaround to this problem.
The max size of the DataSources in the list specifies the max rows per chart.
This solution consists of two classes:
The Concenator (Observer)
The ReportGenerator (Runnable or Thread,
Observable)
Visio sketch of the concenator:
http://i.stack.imgur.com/aMmvC.png
The Concenator first generates a list of DataSources with each having a maximum length.
Than for each DataSource in the list a ReportGenerator will be started, he also will get the pagenumber (for final sorting after collection).
The Concenator waits until every reportpage is delivered.
Whenn every page is collected the concenator sorts the pages according to the number and then stick them together page by page.
PS: I have an visio sketch ready but less reputation for posting it directly.

Related

Is there a way to total estimates and completed work in Azure DevOps queries?

We've come across a number of issues with our Azure DevOps projects and are trying to surface relevant information to the management team with queries and dashboards on projects. Mainly it's just been counting the number of results for particular queries, e.g. when a status hasn't changed in 30 days, number of blocked items, total items in current sprint etc.
What we've been asked for though is to be able to rollup the original estimate total for all work items, and also roll up the completed work as another value. The queries and other things I've seen only seem to be able to count, rather than sum up, but some of the widgets I've seen do appear to sum things for graphs (but I'm just looking for the values).
Can anyone suggest anything?
I imagine that you have two different options here. The first being is that you could leverage the new roll-up columns and aggregate some of this information on the backlog view. Some of this makes assumptions about how you are grouping and the hierarchy of your work items.
Add a rollup column
In the Column options dialog, choose Add a rollup column, select From quick list, and then choose from one of the options listed.
Choose from the menu provided.
Progress bar displays progress bars based on the percentage of associated descendant work items which have been completed or closed.
Total number displays the sum of descendant items or the associated fields of descendant items. Totals provide a measure of the
size of a Feature or Epic based on the number of its child items. For
example, Count of Tasks shows the sum of all tasks that are linked
to parent items. The active or closed state is ignored. Rollup column
menu
Remaining Work of Tasks shows the sum of Remaining Work of tasks that are linked to the parent item.
If you wanted to instead see the summarized details on a dashboard, I'd recommend downloading the Query Tile PRO marketplace extension. Let's say you had a query already defined:
The options support sums based on query fields:
And so you have the tile with the summation value you are wanting. Just replace with other fields that you might need.

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.

Create multiple tables from single query in Jasper Reports

I have to create a report where main thing is a list of items. On the first page there is also supposed to be a bunch of tables that show figures counted from the list (things like amounts of different types of items etc).
Here is an example to demonstrate the idea. List of the items is actually quite long and goes for multiple pages. Other statistics will be listed only on the front page.
(..edit: seems I can't post images yet..)
I have a database query that retrieves the data for the item list. The question is: Is there a way to use this single query to form all the needed statistics?
All the statistics are such that they can be formed with for example using jaspers groups and variables. I also know how to achieve the desired result by using a subreport for each table (and then I'd even be able tailor the query for each table to directly result the wanted values) but I would like to avoid running the same (or almost same) query for multiple times.
Try to put your table component into the SUMMARY band because detail band repeats the record for every row in dataset.
See this

ExpressionEngine missing channel entries

I am working on a new web app which is based in ExpressionEngine and for the most part I am basing the content on channel entries. However I am experiencing some very weird issues with the exp channel entries tag in that it is not returning all relevant entries each time. I can't figure out what's going on with it as the entries are definitely available when viewing them in the control panel, and they will also show up as requested in my template, but sometimes they just disappear and/or are not processed properly. This is the case for large and small sets of entries also, ranging from 3 channel entries which fit the criteria specified within the exp tag to 500 entries.
Any thoughts or feedback would be greatly appreciated.
There could be a number of things going on here so here are some things to look at, just in case;
If the entries have entry dates in the future - you'll need your channel entries tag to have the parameter show_future_entries = "yes"
Likewise if the entries are closed, or expired, you'll need to add show="open|closed"
Are you looking at a particular category and these entries aren't assigned to the category?
Are you looking at a particular category but have exlcuded category data from the entries tag
Are you retrieving more than 100 entries? There is a default limit of 100 entries returned unless you specify a limit parameter.

JasperReport set number of records per page

after exporting jasperreport template, I found that the number of records per page depends on pageHeight. Suppose I always want all the records to be on one page, is there a way to specify this? is there a way to get how many records I want per page? it seems to be depending on height of the report.
You could put in a page break that prints out when $V{REPORT_COUNT} == $P{SOME_NUMBER}. This would force a new page to start.
You can't really ensure that all the records will be on one page unless you only get X number of records. Jasper is built to output the data you give it and if you give it lots of data it will try to output it all.
You can do things like make the font smaller to put more data on the page or to use columns so that data will use the space more efficiently.
Maybe if you give a description of what you want to do a suggestion more suited to your needs may be possible? :)