Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
berndpodhradsky
Partner - Contributor III
Partner - Contributor III

Total Cells via GetData

Hey there!

I'm using the GetData() function of a table visualization to grab its data; headers are returned perfectly fine, so are the actual data rows. However, despite the fact that the visualization does have auto totals, the returned matrix does not contain these (the matrix simply doesn't contain that row).

How can I fetch a matrix from the object that actually includes a complete matrix?

Thanks in advance,

Bernd

1 Solution

Accepted Solutions
Øystein_Kolsrud
Employee
Employee

You are right that the ITableLayout interface does not provide methods for grabbing data, but the totals row is not grabbed the way the other data is grabbed. Instead you'll find it directly in the layout structure. The ITableLayout interface contains a hypercube that in turn contains that totals-row directly in the layout structure. To access it you would do something like this:

var tableLayout = table.GetLayout.As<TableLayout>();

var totalsRow = tableLayout.HyperCube.GrandTotalRow;

Also, the properties of the layout structure are accessible directly from the table object through properties that work as shortcuts into the layout. And the properties of the hypercube are them selves expanded, so the GrandTotalRow is directly accessible from the table object through this property: ITable.GrandTotalRow Property That means you could simplify the above code to this:

var totalsRow = table.GrandTotalRow

Those short cuts are quite convenient in cases like this (which is why they are there in the first place), but they can also be rather confusing which is why I often recommend the first solution.

So the full solution you are looking for would be to concatenate that row with the data you get through the "GetData" method.

View solution in original post

6 Replies
Øystein_Kolsrud
Employee
Employee

I think you'll find the totals-row in this property of the hypercube layout:

HyperCube.GrandTotalRow Property

So you don't use GetData to access that information. You should instead do GetLayout on the visualization and grab the data from there.

berndpodhradsky
Partner - Contributor III
Partner - Contributor III
Author

Hi!

Thank you very much. Maybe I misunderstood your answer, but how can I actually grab data with GetLayout()? The ITableLayout interface, for instance, does not contain methods to actually grab the data of the table, it seems to just contain the settings that define the layout.

Could you provide me a small code example that shows how you could grab a table matrix that represents what is actually displayed to the user (including total row)?

Thanks,

Bernd

Øystein_Kolsrud
Employee
Employee

You are right that the ITableLayout interface does not provide methods for grabbing data, but the totals row is not grabbed the way the other data is grabbed. Instead you'll find it directly in the layout structure. The ITableLayout interface contains a hypercube that in turn contains that totals-row directly in the layout structure. To access it you would do something like this:

var tableLayout = table.GetLayout.As<TableLayout>();

var totalsRow = tableLayout.HyperCube.GrandTotalRow;

Also, the properties of the layout structure are accessible directly from the table object through properties that work as shortcuts into the layout. And the properties of the hypercube are them selves expanded, so the GrandTotalRow is directly accessible from the table object through this property: ITable.GrandTotalRow Property That means you could simplify the above code to this:

var totalsRow = table.GrandTotalRow

Those short cuts are quite convenient in cases like this (which is why they are there in the first place), but they can also be rather confusing which is why I often recommend the first solution.

So the full solution you are looking for would be to concatenate that row with the data you get through the "GetData" method.

berndpodhradsky
Partner - Contributor III
Partner - Contributor III
Author

Hi!

That totally makes sense now, thanks again.

Just a quick additional question: in a PivotTable, there will be more totals than just the "grand total" - will they be returned when using "GetData" or how can they be accessed?

Bernd

Øystein_Kolsrud
Employee
Employee

I'm no expert on pivot tables, so someone else might give a better answer, but it doesn't look to me like pivot table hypercubes differ from straight hypercubes with regards to this.

berndpodhradsky
Partner - Contributor III
Partner - Contributor III
Author

Hi!

Thanks again for taking care of my issue. I find the API documentation to pretty ridiculous in these terms; never worked with a worse documentation in my life, to be quite honest.

I'm still stuck with my issue and it is business critical for us - do you know who to contact best to get support for API issues like these (we are a partner of Qlik). Opening a support case doesn't allow me to choose a category that fits "API Troubles" at all.

BTW: The problem is still have is: the GrandTotalRow gives me a list of cells - but not the exact same number as cells as all the others rows have (because not all columns do have totals). However, there's no property that allows me to find out to which actual columns the total columns belong. Also, even though a total is being displayed for that particular table, the Position property of the Totals property says "NoTotals" .

Thanks in advance,

Bernd