Forum Discussion

rinaibrhm's avatar
rinaibrhm
New Member
2 years ago
Solved

Time Intelligence for Sales and Customer Problem

I have 4 tables as below.

 

The Current and Previous tables are used to store different time period selections from two slicers, used for comparison.

 

For sake of simplicity, lets say :-

'Sales' table contain a record for each unique OrderID, Total Revenue, UserID, Product.

'Customer' table contain a record for each unique UserID, Age, Location.

 

 

In the 'Sales' table, I was able to create 2 measures for 'Sales_Current_Period' and 'Sales_Previous Period'.

 

My issue now is :-

  • how do I create two columns in Customer i.e. Customer['Orders_Current_Period'] and Customer['Orders_Previous_Period']? I want to know COUNT([OrderID]) for each customer in two different periods. (Note: I am aware I can just visualize this in a table easily to get what I need, but just know I need the columns).
  • how do I create a column in Customer i.e. Customer['Top_Product'] where it returns the Sales['Product'] with the highest COUNT([OrderID])?
  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi rinaibrhm ,

     

    According to your description, here are my steps you can follow as a solution.

    (1) This is my test data. 

    (2) We can create calculated columns.

    Orders_Previous_Period = COUNTROWS(FILTER('Sales','Sales'[Order_Date] in VALUES('Previous'[Date]) && 'Sales'[UserID]=EARLIER('Customer'[UserID])))
    Orders_Current_Period = COUNTROWS(FILTER('Sales','Sales'[Order_Date] in VALUES('Current'[Date]) && 'Sales'[UserID]=EARLIER('Customer'[UserID])))
    Top_Product = 
    var _a=SUMMARIZE('Sales','Sales'[UserID],'Sales'[Product],"count",COUNT('Sales'[Product]))
    var _b=MAXX(FILTER(_a,[UserID] = EARLIER('Customer'[UserID])),[count])
    var _c=FILTER(_a,[count]=_b && [UserID]=EARLIER('Customer'[UserID]))
    return CONCATENATEX(_c,[Product],"&")

    (3) Then the result is as follows.

     

    If the above one can't help you get the desired result, please provide some sample data in your tables (exclude sensitive data) with Text format and your expected result with backend logic and special examples. It is better if you can share a simplified pbix file. Thank you.

     

    Best Regards,

    Neeko Tang

    If this post  helps, then please consider Accept it as the solution  to help the other members find it more quickly. 

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi rinaibrhm ,

     

    According to your description, here are my steps you can follow as a solution.

    (1) This is my test data. 

    (2) We can create calculated columns.

    Orders_Previous_Period = COUNTROWS(FILTER('Sales','Sales'[Order_Date] in VALUES('Previous'[Date]) && 'Sales'[UserID]=EARLIER('Customer'[UserID])))
    Orders_Current_Period = COUNTROWS(FILTER('Sales','Sales'[Order_Date] in VALUES('Current'[Date]) && 'Sales'[UserID]=EARLIER('Customer'[UserID])))
    Top_Product = 
    var _a=SUMMARIZE('Sales','Sales'[UserID],'Sales'[Product],"count",COUNT('Sales'[Product]))
    var _b=MAXX(FILTER(_a,[UserID] = EARLIER('Customer'[UserID])),[count])
    var _c=FILTER(_a,[count]=_b && [UserID]=EARLIER('Customer'[UserID]))
    return CONCATENATEX(_c,[Product],"&")

    (3) Then the result is as follows.

     

    If the above one can't help you get the desired result, please provide some sample data in your tables (exclude sensitive data) with Text format and your expected result with backend logic and special examples. It is better if you can share a simplified pbix file. Thank you.

     

    Best Regards,

    Neeko Tang

    If this post  helps, then please consider Accept it as the solution  to help the other members find it more quickly. 

  • Hi amitchandak  I am currently not using the built-in time intelligence and my current solution is using the 'Current' and 'Previous' tables to serve this purpose.

     

    In my Sales table, I already am able to get the time intelligence calculations as below :-

     

    Sales_Previous_Period = 
    CALCULATE (
        SUM([Total Revenue]),
        ALL ( 'Current' ),
        USERELATIONSHIP ( 'Current'[Date], 'Previous'[Date] )
    ) * [Normalization Factor]

     

     

    Sales_Current_Period = SUM([Total Revenue])

     

     

     

    My issue now is to reference the Current and Previous Date selections in my 'Customer' table, since the only relationship it has is on Sales[User ID].