Forum Discussion

BrianNeedsHelp's avatar
BrianNeedsHelp
Resolver I
1 year ago
Solved

Count Rows in Visual

I want to count rows in a Matrix visual.  The row count would change based on what is selected in the slicers.   I want to put the count in a card that will change dynamically based on what is selected in the slicers.  The categories I have are Location and # of Sales.  

I tried Count(Location), but I keep getting the error "parameter is not the correct type".  I tried CountRows, which asks for the table.  What table?   Location comes from one table and # Sales comes from another table!  I'm new to this, but in Excel it's SO EASY.  How can I make this work please?  

6 Replies

  • Hi BrianNeedsHelp 

    You would need to do something like this:

    1. Create a measure that constructs a table containing the same columns/measures as the matrix visual, and counts the rows.
    2. Place that measure on a card visual and ensure the same slicers are filtering both the matrix and card. 

    Explanation:

    • Matrix visuals generate queries using SUMMARIZECOLUMNS behind the scenes, which you can capture and examine using Performance Analyzer (see here).
    • With default settings, the number of rows in a matrix (and returned by SUMMARIZECOLUMNS) depends on the combinations of row fields for which at least one measure is nonblank in at least one column.
    • To create your row count measure, you can take the SUMMARIZECOLUMNS component of the query and simplify/modify to produce the number of rows you actually need, depending whether you want to include subtotals etc. Then count the rows of the resulting table.

    Simple example (PBIX attached):

    • Assume we have a matrix containing Country and Brand on rows, and Sales Amount as the only measure.
    • The matrix does not include subtotals or grand total.
    • We can then create this measure to count the rows and display on a card visual:
    Matrix Row Count - Country|Brand|Sales Amount = 
    COUNTROWS (
        SUMMARIZECOLUMNS (
            'Product'[Brand],
            Customer[Country],
            "Sales Amount", [Sales Amount]
        )
    )

    Notes:

    • The measure assumes specific row/column/measure fields are used in the visual.
    • This would need to be modified if subtotal rows are to be included or if fields are placed in columns rather than rows.

    Regards

  • It works for the Slicers when I just use Location.  When I try to add Sales it says "Parameter is not the correct type".   But it works like I had wanted, but I forgot to mention that I used a filter for Sales Amount.  So the whole idea is to count location where the Sales Amount is less than X amount.  So it ignores that when it's counting the rows-it correctly counts only what's selected in the slicer.  So any idea on that part?