How to optimize the performance of crystal report?

Hi,
-I have to design a crystal report with best possible optimization. Optimization is main concern since report will run against 1-2 million data set. Though I am using parameter to fetch only the required data, required data can go till 1 million records.
-Based on the input passed by the user I have to group the data in report. And for each selected parameter the Detail section I am printing is different. For example:-If user selects store then detail section is different and if user select Host then detail section will be different.
-Report can be grouped by Time Field also. So to full fill this requirement I would have to create a sub report since other parameters are of string type and can be used in one formula to get parameter based grouping in report. However If I try to return Time filed from the same formula I get the errors the "Return type should be of String typeu201D. This forces me to create sub report for Time based grouping. If user selects Time Field to be grouped on, all the information in the main report gets suppressed and only the sub report gets printed.
If user select store, Host and User in parameter to be grouped on, sub report gets suppressed.
Now with the above mentioned points I tried to optimize the report in following way.
-Printing 1 million records in the report does not make sense; hence we wanted to show the summary of all the records in chart section but wanted to print just 5000 records in detailed section. Suppressing detailed section after 5000 records does not help much since suppressing just saves the time in printing and does not limit the number of records to be fetched from the DB.I have a subreport also so it fetches the data 2 times from the DB hence makes the performance of the report worse.
To solve this problem I used command object and put the charts in the subreport and detail in main report.
In main report's Command Object I limited the number to records to be fetched from the DB to 5000 using rownum<5000 but in subreport's Command Object I did not set any limit in the query but I am doing all my aggregation in SQL which means do summary operation in DB and get only summarized data from DB.
-To solve section problem I am using Template object (new feature added in CR 2008).In which I am returning the field based on the "Group By" parameter selected by user.
-For time Field I have created two sub reports, one for chart and other one for details in the same way described in point one(Printing 1 million recordsu2026u2026).
After implementing these points my crystal reports performance improved drastically. The report that was taking 24 minute to come back now taking only 2 minutes.
However I want my report to come back with one minute. It returns if I remove the sub reports for Time Based Grouping but I can not do so.
My questions here are,
-Can I stop Subreport from fetching the data from DB if itu2019s suppressed?
-I believe using Conditional Template Object is a better option rather than having multiple detailed sections to print the data for a selected Group. However any suggestion here to improve the performance will be appreciable.
-since crystal report does not provide any option to limit the number of records to be fetched from DB, I am forced to use command object with rownum in where condition.
    Please let me know about other option(s) to get this done...If there is any.
I am using Crystal report 2008.And we have developed our application the use JRC to export crystal report in PDF.
Regards,
Amrita
Edited by: Amrita Singh on May 12, 2009 11:36 AM

1) I have to design a crystal report with best possible optimization. Optimization is main concern since report will run against 1-2 million data set. Though I am using parameter to fetch only the required data, required data can go till 1 million records.
2) Based on the input passed by the user I have to group the data in report. And for each selected parameter the Detail section I am printing is different. For example:-If user selects store then detail section is different and if user select Host then detail section will be different.
3) Report can be grouped by Time Field also. So to full fill this requirement I would have to create a sub report since other parameters are of string type and can be used in one formula to get parameter based grouping in report. However If I try to return Time filed from the same formula I get the errors the "Return type should be of String typeu201D. This forces me to create sub report for Time based grouping. If user selects Time Field to be grouped on, all the information in the main report gets suppressed and only the sub report gets printed.
If user select store, Host and User in parameter to be grouped on, sub report gets suppressed.
Now with the above mentioned points I tried to optimize the report in following way.
1) Printing 1 million records in the report does not make sense; hence we wanted to show the summary of all the records in chart section but wanted to print just 5000 records in detailed section. Suppressing detailed section after 5000 records does not help much since suppressing just saves the time in printing and does not limit the number of records to be fetched from the DB.I have a subreport also so it fetches the data 2 times from the DB hence makes the performance of the report worse.
To solve this problem I used command object and put the charts in the subreport and detail in main report.
In main report's Command Object I limited the number to records to be fetched from the DB to 5000 using rownum<5000 but in subreport's Command Object I did not set any limit in the query but I am doing all my aggregation in SQL which means do summary operation in DB and get only summarized data from DB.
2)To solve section problem I am using Template object (new feature added in CR 2008).In which I am returning the field based on the "Group By" parameter selected by user.
Edited by: Amrita Singh on May 12, 2009 12:26 PM

Similar Messages

  • How to increase the performance of a report

    can any body tell me how to increase the performance of a report?////
    i have prepared a report to show the expense detail .I have used BSIS and BSAS table.
    But whenever I am executing it is facing runtime error (TIME_OUT error ).
    Moderator Message: Duplicate Post. Read my comments in your previous thread.
    Edited by: kishan P on Nov 25, 2010 1:38 PM

    Please SEARCH in SCN before posting.
    Also post performance related issues here.

  • How to center the content in crystal report viewer?

    open crystal report viewer in winform, default at the left top
    after maxmium the winform window, content become at the center
    another odd thing is that i set window winform size 1208*1024 and crystal report view is fill
    then tried, content is not center any more
    How to center the content in crystal report viewer in code?
    Edited by: Mathew_666 on Oct 6, 2011 5:20 AM

    Since there is no control for center you'll need to do the math on your own. This is just a rough draft, but you'll get the idea.
    One of the things you'll need to figure out is your buffer to help you give a centered feel. We'll say that value is 50 in this case.
    Height
    int buffer = 50;
    int formHeight = 1000; // we'll assume a height of 1000 in this case
    int crystalTop = buffer;
    int crystalViewerHeight = formHeight - (buffer * 2); // buffer is at the top and bottom
    Width
    int formWidth = 1000; // we'll assume a width of 1000 in this case
    int crystalLeft = buffer;
    int crystalViewerWidth = formWidth - (buffer * 2); // buffer is at the top and bottom

  • How to use the DLL in crystal report (Additional applications)

    Hi,
    i have created a win32 dll, and now i want to use that dll in my crystal report how can i do so?, what i tried is i went to to Addntional functions catagory in formula workshop, and there i can see some dlls listed, similary i put my dll in the same path like "C:\Program Files\Common Files\Crystal Decisions\1.0\Bin" and other folder too. but i am not able to see that dll in "Addtional functions". can you plesase tell how can i achive this.
    Regards,
    Prabhakar J.

    Please re-post if this is still an issue to the .NET Development - Crystal Reports Forum or purchase a case and have a dedicated support engineer work with you directly

  • How to check the performance of a report

    plz tell me all the ways to check the performance of a report
    if u send me the step wise then it will be really helpful to me
    awaiting for u r reply

    I. Non Database Performance
    Dead Code (Program -> Check -> Extended Prog. Check) - unused subroutines appear as warnings under PERFORM/FORM interfaces. - unused variables appear as warnings under Field attributes. Transaction code is SLIN. This will also catch literals (section III below).
    When possible use MOVE instead of MOVE-CORRESPONDING (move bseg to *bseg or move t_prps[] to t_prps2[] if you want to copy entire table or t_prps to t_prps2 if you only want to copy header line.)
    Code executed more than once should be placed in a form routine.
    SORT and READ TABLE t_tab WITH KEY ... BINARY SEARCH when possible especially against non-buffered table (Data Dictionary -> Technical Info)
    SORT tables BY fields
    Avoid unnecessary moves to table header areas.
    Subroutine parameters should be typed for efficiency and to help prevent coding and runtime errors.
    II. Database Performanc
    Avoid ORDER BY unless there is index on the columns - sort internal table instead
    SELECT SINGLE when possible
    SELECT fields FROM database table INTO TABLE t_tab (an internal table) - Lengthy discussion.
    Views (inner join) are a fast way to access information from multiple tables. Be aware that the result set only includes rows that appear in both tables.
    Use subqueries when possible.
    "FOR ALL ENTRIES IN..." (outer join) are very fast but keep in the mind the special features and 3 pitfalls of using it.
    (a) Duplicates are removed from the answer set as if you had specified "SELECT DISTINCT"... So unless you intend for duplicates to be deleted include the unique key of the detail line items in your select statement. In the data dictionary (SE11) the fields belonging to the unique key are marked with an "X" in the key column.
    (b) If the "one" table (the table that appears in the clause FOR ALL ENTRIES IN) is empty, all rows in the "many" table (the table that appears in the SELECT INTO clause ) are selected. Therefore make sure you check that the "one" table has rows before issuing a select with the "FOR ALL ENTRIES IN..." clause.
    (c) If the 'one' table (the table that appears in the clause FOR ALL ENTRIES IN) is very large there is performance degradation Steven Buttiglieri created sample code to illustrate this.
    Where clause should be in order of index See example.
    This is important when there are multiple indexes for a table and you want to make sure a specific index is used. This will change when we convert from a "rules based" Oracle optimizer to a "cost based" Oracle optimizer. You should be aware of a bug in Oracle, lovingly referred to as the "3rd Column Blues". Click here for more information on indexes.
    Where clause should contain key fields in an appropriate db index or buffered tables. As long as we are using the Oracle Cost Based Optimizer, be aware fo the "Third Column Blues", an Oracle bug.
    Avoid nested SELECTs (SELECT...ENDSELECT within another SELECT...ENDSELECT). Load data in internal tables instead. See item 3 above.
    Use SQL statistical functions when possible (max, sum, ...)
    Delete all rows from a table. A where clause is mandatory. Specifying the client is the most efficient way.
    Put Check statements into where clause - caveat: Make sure that the index is still being used after you add the additional selection criteria. If the select statement goes from using an index to doing a db scan (reading each row in the database without going through an index) get it out of the where clause and go back to using "Check"!
    III. Literals
    Codes ('MD') should use contants (c_medical)
    Longer text should use text elements. Sample code is a good example because it uses the text element in conjunction with the hard coded text. This documents the text element and provides for the possibility of multi-language support.
    IV. Miscellaneous
    Use CASE statement instead of IF...ELSEIF when possible (It is only possible in equality tests)
    Nested If - encounter most likely to fail first (specific to general)
    And - encounter most likely to fail first (specific to general)
    OR's - encounter most likely to succeed first (general to specific)
    Variables should use Like when possible
    Subroutine usage - don't place decision to execute in the subroutine
    If not ( t_prps[] is initial ) (instead of describe table t_prps lines sy-tfill, if sy-tfill > 0...)
    New document types confirmed with the configuration team via MIT-ABAP mail list prior to coding a report to access the data.
    Dates need to be properly formatted using the user's default settings. For the explanation of the BDC example check out the developer's standards.
    regards,
    suryaprakash.

  • Improving the performance of Crystal Reports for Eclipse 2.0

    Hi,
    I am having some performance issues with displaying reports where it can take upto 30 seconds per user for each new session for the report to display. If we run this directly from the client (through Crystal 2008) it takes about 2 seconds.
    The product only has 4 different rpt files but are constantly viewed by the clients (although with diffferent parameters). The users tend to come onto the system browse a couple of reports and log-off. They will do this about 3 - 5 x a day.
    1) Can you cache the reports at an application level (rather than the session) (and is it recommended)
    2) Create a separate web-service just hosting the Crystal Reports
    3) Other mechanisms of calling the report (currently using addDiscreteParameterValue, replaceConnection, Logon [this replaceConnection and Logon is done for the master and every subreport], then using processHttpRequest
    Anyone got any advice , recommendations or pearls of wisdom?
    Probably have max 15 concurrent users which process these 4 reports.
    Kind regards
    Matt.

    CR4E 2.0 currently uses 5 CPLs - 5 concurrent process license, which means it services up to five concurrent report requests.  This isn't per-session, per-report, or per-user, but per-request (open report, next page, export).
    So having 15 simultaneous users may lead to some requests being queued till a license is free.
    For a more scalable solution, the recommendation is to go with a server-client solution like Crystal Reports Server Embedded or BusinessObjects Enterprise.
    But to tune your CR4E app to see how much you'll be able to service, what I recommend is turning on Log4J logging to see where the performance is going.
    Going from 2 sec to 30 sec between CR Designer (binary app) to CRJ (pure Java app) isn't out of performance expectations, but there may be ways to tune it.
    For example, if you're doing replaceConnection or setTableLocation, you may just want to do it once to the rpt file during deployment, so you'd not need to change the connection info every time the report is run.
    Saving to application context isn't something that CRJ is designed for - it's designed to have the ReportSource per-Session.
    Sincerely,
    Ted Ueda

  • How to change the database in Crystal reports

    To give an overview there is one project going on where the oracle database is getting migrated from 10g to 11g.
    All the details of database like IP, port etc are changing as part of this.
    I can see the driver name configured as crdb_ado (Custom driver).
    We have an test environment for 11g against which we have to point all the reports and test it.
    Could you please let me know the below queries
    Where and how to change the IP details in the crystal reports to point to new test and prod databases.
    Overview on this crdb_ado driver
      Basically the database is getting changed and we want the reports to point and run from the new database.
    Thanks

    Hi Vissu,
    Thanks for your reply.
    We need to change the database from the reports which are already running from central management console.
    I can see a custom driver crdb_ado is being used and it connects to a database.
    Could you please let me know where the database configuration is done.
    Ideally we need to add one more database to a config file which i am not able to find.
    I guess it should be similar to tnsnames.ora file in oracle where the different databases are stored.
    From the above image I would like to know where the server details (NECTAR_Prod) would be configured.
    Thanks in advance

  • How to optimize the performance of this code ?

    I've two Movie clips on a flash project. One of them is fixed and the other can be moved by arrow buttons on the keyboard. The two Movie clips have irregular shapes, so HitTestObject and HitTestPoint doesn't work very well. I've a function that detects collision of two movie clips using bitmap. I wanted to update the position of the movable Movie clip so I put the collision detection function under the code of ENTER_FRAME event listener. It works very well, but when I add many fixed movie clips  ( about 10 fixed movie clips in one frame ), the game (.swf file) becomes slower and the performance of the PC becomes slower. I thought that my collision detection function has a negative effect on PC performance so I used the class on this page : https://forums.adobe.com/thread/873737
    but the same thing happens.
    Would you tell me how to speed up the execution of my codes ?
    Here is part of my code :
    stage.addEventListener(Event.ENTER_FRAME, myOnEnterFrame);
    function myOnEnterFrame(event:Event):void
      if (doThisFn) // doThisFn is a variable to allow or prevent the movable movie clip form being moved with keyboard arrows
      if ( left && !right ) {
      player.x -= speed;
      player.rotation = player.rotation - speed ;
      if( right && !left ) {
      player.x += speed;
      player.rotation = player.rotation + speed ;
    if( up && !down ) {
      player.y -= speed;
    if( down && !up ) {
      player.y += speed;
    // The fixed movie clips are wall1 ,wall2 , wall3 , wall4 , ... and so on
    // the following code checks how many walls exists on each frame and pushes them into the wallA  array
      for(var i:int=0;i<1000;i++) // We can put up to 1000 wall object into the wallA array
      if(this['wall'+i]) // If the object wall exists, push it into the wallA array
      wallA.push(this['wall'+i]);
      for(i=0;i<wallA.length;i++)
      if( h.hitF (player , wallA[i] ) || gameOverTest ) // This code checks if the player ( the movable movie clip ) hits the walls or not
      trace ( "second try" ) ;
      gameOver.visible = true ;
      doThisFn = false ;
    //I think the following codes are easy to excite and run. I think the performance issue is due to previous codes.
      if (player.hitTestObject(door))
      win.visible = true ;
      doThisFn = false ;
      if (key) // if there is a key on frame
      if (player.hitTestObject(key))
      key.visible = false ;
      switch( currentFrame )
      case 4:
      wallA[0].visible = false ;
      wallA[0].x = 50000;
      break;
      case 5:
      wall14.play();
      wall8.x = 430 ;
      break;

    it's a simple question that usually has no simple answer.
    here's an excerpt from a book (Flash Game Development: In a Social, Mobile and 3D World)  i wrote.
    Optimization Techniques
    Unfortunately, I know of no completely satisfactory way to organize this information. In what follows, I discuss memory management first with sub-topics listed in alphabetical order. Then I discuss CPU/GPU management with sub-topics listed in alphabetical order.
    That may seem logical but there are, at least, two problems with that organization.
    1. I do not believe it is the most helpful way to organize this information.
    2. Memory management affects CPU/GPU usage, so everything in the Memory Management section could also be listed in the CPU/GPU section.
    Anyway, I am going to also list the information two other ways, from easiest to hardest to implement and from greatest to least benefit.
    Both of those later listings are subjective and are dependent on developer experience and capabilities, as well as, the test situation and test environment. I very much doubt there would be a consensus on ordering of these lists.  Nevertheless, I think they still are worthwhile.
    Easiest to Hardest to Implement
    1.  Do not use Filters.
    2.  Always use reverse for-loops and avoid do-loops and avoid while-loops.
    3.  Explicitly stop Timers to ready them for gc (garbage collection).
    4.  Use weak event listeners and remove listeners.
    5.  Strictly type variables whenever possible.
    6.  Explicitly disable mouse interactivity when mouse interactivity not needed.
    7.  Replace dispatchEvents with callback functions whenever possible.
    8.  Stop Sounds to enable Sounds and SoundChannels to be gc'd.
    9.  Use the most basic DisplayObject needed.
    10. Always use cacheAsBitmap and cacheAsBitmapMatrix with air apps (i.e., mobile devices).
    11. Reuse Objects whenever possible.
    12. Event.ENTER_FRAME loops: Use different listeners and different listener functions applied to as few DisplayObjects as possible.
    13. Pool Objects instead of creating and gc'ing Objects.
    14. Use partial blitting.
    15. Use stage blitting.
    16. Use Stage3D
    Greatest to Least Benefit
    Use stage blitting (if there is enough system memory).
    Use Stage3D.
    Use partial blitting.
    Use cacheAsBitmap and cacheAsBitmapMatrix with mobile devices.
    Explicitly disable mouse interactivity when mouse interactivity not needed.
    Do not use Filters.
    Use the most basic DisplayObject needed.
    Reuse Objects whenever possible.
    Event.ENTER_FRAME loops: Use different listeners and different listener functions applied to as few DisplayObjects as possible.
    Use reverse for-loops and avoid do-loops and while-loops.
    Pool Objects instead of creating and gc'ing Objects.
    Strictly type variables whenever possible.
    Use weak event listeners and remove listeners.
    Replace dispatchEvents with callback functions whenever possible.
    Explicitly stop Timers to ready for gc.
      16. Stop Sounds to enable Sounds and SoundChannels to be gc'd.

  • Toshiba M100 - How to optimize the performance?

    I upgrade my Toshiba M100 from XP to Windows 7 after installing 2GB ram.
    What to do for better performance to my system?

    Hi mate,
    What Toshiba M100 you have? Is it Portege M100, Satellite M100 or what else?
    To enhance the performance of Windows you should defragment the HDD, disable all services that you dont need and disable all start up programs that you dont need.
    If you ask Google for some tips how to optimize, you will find enough! ;)

  • How to protect ECC performance from Crystal Reports execution?

    Hello,
    We built Crystal Reports (CR) which reports from SAP FI InfoSets. These reports may take a long time to execute and potentially can impact all ECC users.
    AFAIK CR are executed in dialog mode on ECC.
    We know that from CR perspective we can only limit the number of records returned.
    One of the options is to create a dedicated application server instance for CR. But it looks like a costly one.
    Other options:
    Move data to BW every 15 minutes and execute reports from there.
    Schedule reports at night to minimize users impact.
    We are using ECC 6 EP3, BW 3.5, BOE XI 3.1 (with SAP Integration Kit) and Crystal Reports 2008.
    Can you please let me know if any of you have the same challenge.
    Thank you,
    Serge

    Hi Ingo,
    I'm using [BusinessObjects XI Integration for SAP Solutions Installation and Administration Guide|https://websmp209.sap-ag.de/~sapdownload/011000358700001646962008E/xi3-1_bip_sap_install_en.pdf] (from 2008-12-02). There are some references to batch publishing from BW. The same applies to your document [BusinessObjects Integration Kit for SAP - Installation and ConfigurationSDN Community Day - BusinessObjects Enterprise with SAP|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a00ee3b2-5283-2b10-f1bf-8c6413e0898f].
    When we schedule CR in BOE it still runs in dialog mode on ECC.
    Could you please be more specific where we can define switch to make it run as background process on ECC.
    Thank you,
    Sergey
    Edited by: Sergey Vlasov on Apr 16, 2009 11:56 AM

  • How to Adjust the field in Crystal report

    hi experts
    In Sales Quotation i haved created 16 number of user defined fields which they can enter the data in that for one quotation the characters are 189 and for another quotation there are 1245 characters if i preview the lay out the field getting over lapped can any one help me how to rectify the issue with out ove lappind
    Regards ,
    Meghanath.S

    Dear $riniva$ Rachumallu
    If we do that the below field is getting over lapped

  • Performance Issue Crystal Report and Oracle

    Hello,
    We have one procedure that takes 3 input parameters and returns Cursor from Procedure that is used to design the report. There is no caluculation involved here and cursor is opended dynamically. We are using Oracle Native connection.
    When we click on preview button it takes lots of time ( >10 Mins) to show complete data. While we call the same procedure in application and generate HTML report using Cursor returned it is done in < 15 Seconds. Can some point me where to look into to improve the performance of Crystal Report.
    DB: Oracle 10G
    CR: Version XI

    Hi Vadiraja
    The performance of a report is related to:
    External factors:
    1. The amount of time the database server takes to process the SQL query.
    ( Crystal Reports send the SQL query to the database, the database process it, and returns the data set to Crystal Reports. )
    2. Network traffics.
    3. Local computer processor speed.
    ( When Crystal Reports receives the data set, it generates a temp file to further filter the data when necessary, as well as to group, sort, process formulas, ... )
    4. The number of record returned
    ( If a sql query returns a large number of records, it will take longer to format and display than if was returning a smaller data set.)
    Report design:
    1. Where is the Record Selection evaluated.
    Ensure your Record Selection Formula can be translated in SQL, so the data can be filter down on the server, otherwise the filtering will be done in a temp file on the local machine which will be much slower.
    They have many functions that cannot be translated in SQL because they may not have a standard SQL for it.
    For example, control structure like IF THEN ELSE cannot be translated into SQL. It will always be evaluated in Crystal Reports. But if you use an IF THEN ELSE on a parameter, it will convert the result of the condition to SQL, but as soon as uses database fileds in the conditions it will not be translated in SQL.
    2. How many subreports the report contains and in section section they are located.
    Minimise the number of subreports used, or avoid using subreports if possible because
    subreports are reports within a report, and if you have a subreport in a details section, and the report returns 100 records, the subreport will be evaluated 100 times, so it will query the database 100 times. It is often the biggest factor why a report takes a long time to preview.
    3. How many records will be returned to the report.
    Large number of records will slow down the preview of the reports.
    Ensure you only returns the necessary data on the report, by creating a Record Selection Formula, or basing your report off a Stored Procedure, or a Command Object that only returns the desired data set.
    4. Do you use the special field "Page N of M", or "TotalPageCount"
    When the special field "Page N of M" or "TotalPageCount" is used on a report, it will have to generate each page of the report before it displays the first page, therfore it will take more time to display the first page of the report.
    If you want to improve the speed of a report, remove the special field "Page N of M" or "Total Page Count" or formula that uses the function "TotalPageCount". If those aren't use when you view a report it only format the page requested.
    It won't format the whole report.
    5. Link tables on indexed fields whenever possible.
    6. Remove unused tables, unused formulas, unused running totals from the report.
    7. Suppress unnecessary sections.
    8. For summaries, use conditional formulas instead of running totals when possible.
    9. Whenever possible, limit records through selection, not suppression.
    10. Use SQL expressions to convert fields to be used in record selection instead of using formula functions.
    For example, if you need to concatenate 2 fields together, instead of doing it in a formula, you can create a SQL Expression Field. It will concatenate the fields on the database server, instead of doing in Crystal Reports. SQL Expression Fields are added to the SELECT clause of the SQL Query send to the database.
    11. Using one command as the datasource can be faster if you returns only the desired data set.
    It can be faster if the SQL query written only return the desired data.
    12. Perform grouping on server
    This is only relevant if you only need to return the summary to your report but not the details. It will be faster as less data will be returned to the reports.
    Regards
    Girish Bhosale

  • Do you have an idea how to improve the performance ?

    Hi All,
    Greeting,
    I'm doing SEM IP. Regarding the performance, do you have some thought about this ?
    So I have planning report for project report . As we know, if we forecast against project, means the date itself is the life of the project itself.
    It means it could be more than 10 years (forecast period) and 10 years (actual period). Currently I segregate between actual and forecast into different info cube .
    But the performance of the planning report is slow now. Do you have an idea about this how to increase the performance. The performance I mentioned here is when we're going to the report (after putting in the value in the selection screen).
    The other question, at this moment, I have a multiprovider than this multi provider consist 2 info cubes ( actual and forecast ). Than my aggregation is sitting on top of that multi-provider .
    My question whether that's approach correct or not ? Or do we have to create 1 aggregate (only for forecast), than I have multi-provider consisting forecasting aggregation and actual cube .
    than my query will sit on top of that multi-provider ?
    Which one is better ??
    Thanks a lot all,
    really need your help,

    Hi,
       For the performance tuning, you can consider any of the following three methods,
    1. Indices
    With an increasing number of data records in the InfoCube, not only the load but also the query performance can be reduced. This is attributed to the increasing demands on the system for maintaining indexes. The indexes that are created in the fact table for each dimension allow you to easily find and select the data.
    2. Partitioning
    By using partitioning you can split up the whole dataset for an InfoCube into several, smaller, physically independent and redundancy-free units. Thanks to this separation, performance is increased when reporting, or also when deleting data from the InfoCube.
    3. Aggregates 
    Aggregates make it possible to access InfoCube data quickly in Reporting. Aggregates serve, in a similar way to database indexes, to improve performance.
    4. Compressing the Infocube
    Infocube compression means aggregation of the data ignoring the request idu2019s. After compression, the system need not perform aggregation using the request ID every time you execute a query.
    And I feel that as per your scenario, you need to do first compress the data based on user requirements and have only the required data in the infocube.
    And for the approach regarding the Aggregation level design, choosing between the two approaches depends on the user requirements. For example,
    If you have aggregation level created on top of multiprovider containing actual and forecast cube, in your report (created on top of aggregation level) you can view the key figure values present in both the cubes, which is not possible in the other approach.
    So this approach is suited if your requirement is to view the records from both the cubes in your report (Comparing planning and actual values).
    The second approach is used if your requirement is only to report on planning forecast cube.
    Hopes this solves your issue.
    Regards,
    Balajee

  • How to find the list of Queries/Reports which are using Exceptional Aggregation in SAP BI?

    Hi All,
    We are interested to know how to find the list of Queries/ Reports which are using Exceptional aggregation in SAP BI.
    Please let us know is there any table's to check the list of reports using Exceptional Aggregation in SAP BI.

    Hi,
    Here you go..
    1) Go to table RSZCALC and get list of ELTUID where AGGREXC is not INITIAL and AGGRCHA is not initial; now you get only exception aggregation set based on some chars. Also you can further add STEPNR = 1 since your intention is just to get query name , not the calculation details; this will reduce number of entries to lookup and save DB time for next steps.
    Here you will get list of exception aggregation UUID numbers from which you can get properties from RSZELTDIR.
    2) Pass list of RSZCALC-ELTUID to table RSZELTXREF - TELTUID and get list of RSZELTXREF -SELTUID - this table stores query to it's elements maping kind.
    3) Now again pass RSZELTXREF - SELTUID into same table but into different field RSZELTZREF - TELTUID and get RSZELTXREF - SELTUID
    This step you get query reference sheet or column or query general UUID for next step.
    4) Pass list of RSZELTXREF - SELTUID into RSZELTDIR - ELTUID with DEFTP as 'REP'. Now you get list of query names in RSZELTDIR - MAPNAME and description in TXTLG.
    Note: you can also get the reference chars used for exception aggregation from RSZCALC - AGGRCHA field.
    Hope this helps.
    Please keep in mind, it might take more time depends on how many query elements you have in the system...
    Comments added for better DB performance by: Arun Thangaraj

  • How to Improve the performance in Variable Selection Screen.

    Hi,
    In Query Level we have Variable " User entry Defalt Valu". User want select particular value when he press "F4" it's take hours time how to improve the performance in Varaible Selection Screen.
    Thanks in Advance.
    Regards,
    Venkat.

    Dear Venkat.
    You please try the following steps:
    1. Say the InfoObject is 0EMPLOYEE against which you have created the variable, which user is trying to select value against, when they execute the report.
    2. Goto RSA1-> InfoObject tab-> Select InfoObject 0EMPLOYEE.
    3. Selcet the following options:
       Query Execution Filter Val. Selectn  -  'Only Posted Value for Navigation'
       Filter Value Repr. At Query Exec. -      'Selector Box Without Values'
    Please let me know if there is any more issue. Feel free to raise further concern
    Thnx,
    Sukdev K

Maybe you are looking for