May 19, 2012  
   Login  
Forum  
 
ForumForumEnesys RS Data ...Enesys RS Data ...Support - RS Da...Support - RS Da...Multiple Parameters with Rollup Performance IssuesMultiple Parameters with Rollup Performance Issues
Previous Previous
 
Next Next
New Post
 6/8/2009 8:01 PM
 

I'd like to speed up query performance.  Currently I'm using the multilist query:

<multiList title="Milestones" relativeSiteUrl="/" type="RollUpList" tableName="Milestones">

I'm using a <sqlQuery> with a where statement to filter out all but the selected site lists:

SELECT *
  FROM Milestones
  WHERE substr(rstLabel, 12, 7) IN (@paramProjectName!)
  ORDER BY Date

In hopes to improve performance I'd like to retrieve only the selected site lists from the MultiList statement instead of retrieving all and then filtering, but I dont' know how to use an "IN" statement in the Multilist where clause.

 

New Post
 6/9/2009 11:36 AM
 

Hi legendsfan,

The only way to filter a rollUpLists (or multiList type="RollUpList") statement before retrieving the data is to specify a different relativeSiteUrl.

If every Milestones lists that you want to retrieve are in the same site, you can use a query which looks like this one:

<multiList title="Milestones" relativeSiteUrl="@paramProjectName!" type="RollUpList" tableName="Milestones">

or with rollUpLists:

<rollUpLists title="Milestones" relativeSiteUrl="@paramProjectName!" tableName="Milestones">

If the lists that you want to retrieve are not in the same site, you won't be able to filter the data.

Regards,
Marien MONNIER
Enesys

New Post
 6/9/2009 1:20 PM
 

Hi,

Indeed, it is not possible to filter out based on the current site’s name. This is definitively a feature that we should add in the next version.

That said, I may have a workaround. I’m assuming that your sites name match your project’s names.

Could you let me know where you get the project’s names. Said another way, how do you initialize paramProjectName report’s parameter.

Could you also let me know about your site’s hierarchy. Do you have all project’s site at the same level or do you have nested project’s hierarchy.

Thanks,


Frederic LATOUR
ENESYS
New Post
 6/9/2009 8:23 PM
 

Site names do match the project names.  Currently, we retrieve the project names from a Project Server database as the label/name of the parameter.  The value of the parameter is a field named "projectCode".  The "projectCode" field is what we use for the URL when creating a project site.  The sites are in a flat hierarchy so all project sites are 1 level below top level site. 

Summary: "projectCode" = relativeSiteURL and all sites at the same level in the hierarchy.

Thanks,

Colin

 

New Post
 6/9/2009 10:07 PM
 

So here is how you could improve performance significantly depending on the number of projects selected at run time:

In your RollUpLists query, filter the items based on FileDirRef like the following:

image

 

“FileDirRef” has the following format:

<relative site url>lists/<list’s name>

Say your top level site is “/sites/Projects”, FileDirRef would have the following value within each site :

  • sites/projects/project01/lists/Milestones
  • sites/projects/project02/lists/Milestones
  • sites/projects/project03/lists/Milestones

Now you should arrange so that your parameter’s value has the following form:

sites/projects/<project’s name>/lists/Milestones.

When I made some tests, I just entered the values but you would obviously come up with the values using some function within your query over your project’s database.

image

Obviously, we should improve Enesys RS Data Extension so that such scenarios are easier to implement. We will definitely do, but in the meantime, this approach should work.

Can you keep us informed?

Regards,


Frederic LATOUR
ENESYS
New Post
 6/10/2009 10:18 PM
 

Bummer. The query works but the performance didn't seem to improve. There are 342 Milestones from about 30 different sites and the query takes 13 seconds to run when retrieving all milestones. If I filter to just retrieve from one or two sites it take almost the exact same amount of time.  I was assuming the query would speed up.  13 seconds seems like an awful long time considering I can run SQL queries to our project management database and retrieve thousands of rows in a second.

Any ideas why performance is so slow?

Thanks,

Colin

New Post
 6/10/2009 10:33 PM
 


Hi,

That seems indeed quite strange.

If you have only 342 milestones, I can understand it didn’t change anything. The problem must be somewhere else.

When running under Query Builder without filtering on a project basis, do you encounter the same problem?

Could you possibly send us your report file (.rdl) by email so that we can have a look and see if we come up with any idea?

Regards,


Frederic LATOUR
ENESYS
New Post
 6/11/2009 1:38 AM
 

Yes. Whether I filter or not the query takes the same amount of time.  I've included my code in the post and I'll send you the RDL file.  I stripped out a bunch of datasets to keep it simple.  The odd part is one rolluplist dataset takes the same amount of time to run as 4 of them together.  This query is only using a single select parameter but in the future I may want it to be a multi-select parameter dropdown. Will the below query work with multi-select parameters?

There are about 50 project sites to loop and rollup through on the server and I expect that number to be well over 100 in another 6 months.  These rollup queries work fine on another site collection where there are only a couple sites.

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://enesyssoftware.com/schemas">
  <queryName>Query1</queryName>
  <description></description>
  <rollUpLists title="Milestones" relativeSiteUrl="/" tableName="Milestones">
    <fields>Title,Date,Owner,Status,Health,Category,Notes,FileDirRef</fields>
    <query>
      <Where>
    <And>
        <Eq>
          <FieldRef Name="Status" />
          <Value Type="Choice">(1) Active</Value>
        </Eq>
    <In>
    <FieldRef Name="FileDirRef" />
    <Value Type="Lookup">@paramProjectName!</Value>
    </In>
    </And>
      </Where>
    </query>
  </rollUpLists>
  <resultSet>Milestones</resultSet>
</root>

 

Previous Previous
 
Next Next
ForumForumEnesys RS Data ...Enesys RS Data ...Support - RS Da...Support - RS Da...Multiple Parameters with Rollup Performance IssuesMultiple Parameters with Rollup Performance Issues

 
You need to login for posting to the forums.
If you don't have a login, click here to register.
 
Copyright 2010 Enesys - All rights reserved Terms Of UsePrivacy Statement