Forum Discussion

k_mathana's avatar
k_mathana
Helper II
5 years ago
Solved

Random Sample per Category

Hi

Could you please help me to figure out this, I need to select randomly 2 order number from each category. How I can do this in power BI?

CategoryOrder Number
Category A1131292
Category A1131240
Category A1131285
Category A1131278
Category A1131287
Category B1131256
Category B1131262
Category B1131259
Category B1131238
Category C1131260
Category C1131245
Category C1131244
Category C1131281
Category C1131240
Category C1131294
Category C1131273
  • Anonymous's avatar
    Anonymous
    5 years ago

    I don't really know why those 2 specific orders are shown... I just used the standard function SAMPLE(). Please go through the following link and you can further parametrize the function.

    https://docs.microsoft.com/en-us/dax/sample-function-dax

     

    If this solution does not meet your requirements, then you will have to consider ranking the orders using RANKX() and then use RANDBETWEEN() to generate a random number between the lowest and highest rank of each category and then pick any two randomly for each category, then do a cross join or use GENERATE in that context.

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Assume that you have the following table named "Orders"

    The following calculated table expression gives you the sample table.

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      I don't really know why those 2 specific orders are shown... I just used the standard function SAMPLE(). Please go through the following link and you can further parametrize the function.

      https://docs.microsoft.com/en-us/dax/sample-function-dax

       

      If this solution does not meet your requirements, then you will have to consider ranking the orders using RANKX() and then use RANDBETWEEN() to generate a random number between the lowest and highest rank of each category and then pick any two randomly for each category, then do a cross join or use GENERATE in that context.

      • k_mathana's avatar
        k_mathana
        Helper II

        Thank you so much for your time Anonymous, Yes that becomes deterministic value. I did the same as you suggested added RAND() column and created a table as follows

         

        Sampler = GENERATE(
        ALLNOBLANKROW( Orders[Category] ),
        CALCULATETABLE(
        TOPN(
        2,
        SELECTCOLUMNS(Orders, "Order Number", [Order Number], "RanNum", [RanNum]),
        [RanNum],ASC
        )
        )
        )