Forum Discussion
Nested if statements/Switch function?
Howdy!
I need some direction from you nice guys 😊
I am new to Powerbi and I am trying to get to a solution to my issue. I have a dataset and I am assigning groups to our customers
Customer 1001 = US Postal Code
Customer 1002 = Europe Postal Code
Customer 1003 = Asia Postal Code.
An issue appears when the customer moves or if they order for another customer. So I want to build in a function or create a custom column (that can be used in a filter). I am using the switch function for the normal customers but I need away to include the abnormal cases.
Lexi can you try this
Column = VAR _home = SELECTCOLUMNS ( SUMMARIZE ( CALCULATETABLE ( 'Table', ALLEXCEPT ( 'Table', 'Table'[CustID] ) ), 'Table'[CustID], 'Table'[Home] ), "cust", [CustID], "country", [Home] ) VAR _shipping = SELECTCOLUMNS ( SUMMARIZE ( CALCULATETABLE ( 'Table', ALLEXCEPT ( 'Table', 'Table'[CustID] ) ), 'Table'[CustID], 'Table'[Shipping] ), "cust", [CustID], "country", [Shipping] ) VAR _intersect = INTERSECT ( _home, _shipping ) VAR _except = EXCEPT ( _shipping, _home ) RETURN IF ( MAXX ( _except, [country] ) = BLANK (), MAXX ( _intersect, [country] ), MAXX ( _except, [country] ) )which generates this
8 Replies
- ValtteriNCommunity Champion
Hi,
Unfortunately, your post is rather difficuilt to understand and it would be good if you provided more information. For now, the only help that I can give is to show some patterns/tips that I use in my models when I want to categorise customers in measures:
First typically I create a SWITCH + TRUE structure where it goes something like this:
SWITCH(TRUE(),
PLACE IF CONDITION HERE, "Category 1",
PLACE IF CONDITION HERE, "Category 2",
PLACE IF CONDITION HERE, "Category 2")
Then I create a table which has these states to use as a filter:
Table = {("Category 1"),("Category 2"),("Category 3")}
Finally I create a filter measure to use in my visuals:
Customer category switch filter:= IF(
or(not(HASONEFILTER('Table'[Value])),[Customer category]=max('Table'[Value])),1,0)
I hope this helps to solve your issue and if it does consider accepting this as a solution and giving the post a thumbs up!- LexiFrequent Visitor
Thanks folks!
I am trying to get at column D so I can use it later on as a filter in the main dashboard.
So I created this formal so far -
POSTAL CODE = Switch([CustomerID],
"Customer1001", "USA",
"Customer 1002", "EU", "Other"
This works for the customers that have no difference. I need to complete the column of the customers that dont conform. I want to try to complete a column with those easy customers that follow correctly and then the ones that dont, but I am unsure how to add the exceptions.
Ie: Customer 1001 if shipping address is europe then the postal code is eu otherwise usa- smpa01Community Champion
Lexi can you try this
Column = VAR _home = SELECTCOLUMNS ( SUMMARIZE ( CALCULATETABLE ( 'Table', ALLEXCEPT ( 'Table', 'Table'[CustID] ) ), 'Table'[CustID], 'Table'[Home] ), "cust", [CustID], "country", [Home] ) VAR _shipping = SELECTCOLUMNS ( SUMMARIZE ( CALCULATETABLE ( 'Table', ALLEXCEPT ( 'Table', 'Table'[CustID] ) ), 'Table'[CustID], 'Table'[Shipping] ), "cust", [CustID], "country", [Shipping] ) VAR _intersect = INTERSECT ( _home, _shipping ) VAR _except = EXCEPT ( _shipping, _home ) RETURN IF ( MAXX ( _except, [country] ) = BLANK (), MAXX ( _intersect, [country] ), MAXX ( _except, [country] ) )which generates this
- LexiFrequent Visitor
Hi all,
Thanks for all your contribution.
I tried out your formual but it aint working for me as I figured out my conditions are more complicated than I first intended.I have one set of customers (150 in total) following one swich formual correct (VAR a), then about 5 customers that are the outliers and do not follow suit. I meantion two hard ones below (Var B, Var C)
Var a = switch ([customer],
"Customer 1001" , "USA",
"Customer 1002", "Asia", "Other ...... and so on
Var b = if [Customer] = "2002" && [cat] <> "Household" THEN " USA" else "Europe"
Var c = if [Customer] = "2002" && [order date] > "2021, 10, 1" then "USA" else "Asia"How the do I even try get this into a new custom column? Any direction will help!