Forum Discussion

Peter_K's avatar
Peter_K
New Member
2 years ago
Solved

Countrows if ID is unique

Hello. I have browsed your solutions here, but coudn't find anything i could use in my situation.

I am all new to PowerBI.

I have a JSON datasource, with 500 chats in it. It has following columns:

startedinitialUserMessagemessageCountchatIdstartUrllogEvents

 

Here i have a example from the content, so i better can explain my wish:

 

Every chat has a unique chatId. So initialUserMessage appear on multiple rows with that unique chatId. 1 row for each text sent from and to the user.

What i like to achieve is a table where it counts initialUserMessage only one time, for each unique chatId. ie:

Hey25
Printer is offline8
My word tells me its invalid code1

 

What i have tried so far, either leave me with error, 1, 500, or even:

Hey574725
Printer is offline367824

 

I dont seem to get it right.

The formula i tried and messed around with, is like this now, and gives value 500 (the total chats)

 

 

 

test1 = CALCULATE(DISTINCTCOUNT(chat_logs[chatId]),FILTER(chat_logs, chat_logs[initialUserMessage]=chat_logs[initialUserMessage]))

 

 

 

 

Here is the structure of JSON import, where test1 is the one i try this in:

 

 Can you please help me with this problem?

 

Thank you in advance.

  • Hello Peter_K 

     

    please check if this accomodate your need.

     

    I made a random data based on your problem.

     

    Create a measure with following DAX:

    Count =
    var _Message = SELECTEDVALUE('Table'[Message])
    Return
    CALCULATE(DISTINCTCOUNT('Table'[ChatID]),FILTER('Table','Table'[Message]=_Message))
     
    If this result doesnt match to your problem, please give a set of dummy data that can represent your whole data.
     
    Hope this will help you.
    Thank you.
  • Irwan's avatar
    Irwan
    2 years ago

    Hello Peter_K ,

     

    that happens because of the filter in calculate DAX. The total seems not be able to be calculated properly.

     

    In my sample data, the total didnt even show up.

     

    To solve this, simply just remove the filter and use DISTINCTCOUNT directly

     

    In fact, if your data has uniqueID for every message, I think direct distinctcount should do the job (no need put any filter by calculate DAX).

    But please give it a try first and let see if you get the correct value or not by using direct distinctcount.

     

    Hope this will help you.

    Thank you.

7 Replies

  • Hello Peter_K 

     

    please check if this accomodate your need.

     

    I made a random data based on your problem.

     

    Create a measure with following DAX:

    Count =
    var _Message = SELECTEDVALUE('Table'[Message])
    Return
    CALCULATE(DISTINCTCOUNT('Table'[ChatID]),FILTER('Table','Table'[Message]=_Message))
     
    If this result doesnt match to your problem, please give a set of dummy data that can represent your whole data.
     
    Hope this will help you.
    Thank you.
    • Peter_K's avatar
      Peter_K
      New Member

      Thank you so much Irwan  That totally solved my problem.

      I am so happy now, i really tried so many things, nothing worked the way i wanted.

      You solved it, thank you. Never thought it was under measure.

       

      You know why it show 14 as total?

       

  • I can't clean the JSON file for GDPR content.
    The file has confidental data.
    Does that mean you cant help me?