Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
SelflearningBi
Helper III
Helper III

how to handle three different order date forecast

Model NameColor NameMOQ ColorMOQ ModelOrder Date 1Order Date 1 ForecastOrder Date 2Order Date 2 ForecastOrder Date 3Order Date 3 ForecastOrder Date 4Order Date 4 Forecast
ARed10003001/1/202210001/3/202230001/1/202212001/1/20221000
BRed300010001/2/202210001/5/202210001/2/202210001/6/20223000
CBlue500030001/1/202220003/1/202220001/1/202250001/11/20222000
CPink100030001/1/202250003/1/20225001/1/202210001/11/20222000

Similar Data as above table

I would like to analyze different order dates if meeting the MOQ Model level and MOQ Color level.


Color Level

In MOQ color level order date 1 in Model A : ( 1000 -1000),  YES meet MOQ, IF ORDER DATE FORECAST HIGHER THAN THE ACTUAL LEVEL THAN IT MEET THE MINIMU ORDER QTY, and should add a column display it meets or not meet. 
In MOQ color level order date 1 in Model B : ( 3000 -1000),  NOT meet MOQ
In MOQ color level order date 2 in Model A: (1000 -3000),  YES meet MOQ

Model Level
In MOQ Model level order date 1 shoud add the same model together. 
Takes Model Name C In order date 1 as an example:  
                         (6000 - 7000), Yes meet MOQ 
Order date 2 will also do the same thing  (6000 - 2500),  No meet moq     
               
I have to do the same thing for all 4 order dates, are there any methods I can easily fuifill this calcuation? 

1 ACCEPTED SOLUTION
v-easonf-msft
Community Support
Community Support

Hi, @SelflearningBi 

Before calculating the difference, you can unpivote the date columns, which saves you from creating multiple similar measure for each date.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUQpKTQGShgYGBkDKGEwa6hvqGxkYGSHEDfWNYSLGBhhqjLDqitWJVnKCWwDTBtNthGGDKYYIphozFFeAbHAGcpxySlOBlCncD2jOMYJKYIggqTGFi6AqgtkRkJmXjRJO2PUbo4jgCEt0K2IB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Model Name" = _t, #"Color Name" = _t, #"MOQ Color" = _t, #"MOQ Model" = _t, #"Order Date 1" = _t, #"Order Date 1 Forecast" = _t, #"Order Date 2" = _t, #"Order Date 2 Forecast" = _t, #"Order Date 3" = _t, #"Order Date 3 Forecast" = _t, #"Order Date 4" = _t, #"Order Date 4 Forecast" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Model Name", type text}, {"Color Name", type text}, {"MOQ Color", Int64.Type}, {"MOQ Model", Int64.Type}, {"Order Date 1", type date}, {"Order Date 1 Forecast", Int64.Type}, {"Order Date 2", type date}, {"Order Date 2 Forecast", Int64.Type}, {"Order Date 3", type date}, {"Order Date 3 Forecast", Int64.Type}, {"Order Date 4", type date}, {"Order Date 4 Forecast", Int64.Type}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Model Name", "Color Name", "MOQ Color", "MOQ Model", "Order Date 1 Forecast", "Order Date 2 Forecast", "Order Date 3 Forecast", "Order Date 4 Forecast"}, "Attribute", "Value"),
    #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Columns",{{"Value", "Order Date"}}),
    #"Added Conditional Column" = Table.AddColumn(#"Renamed Columns", "Forecast", each if [Attribute] = "Order Date 1" then [Order Date 1 Forecast] else if [Attribute] = "Order Date 2" then [Order Date 2 Forecast] else if [Attribute] = "Order Date 3" then [Order Date 3 Forecast] else if [Attribute] = "Order Date 4" then [Order Date 4 Forecast] else null),
    #"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column",{"Order Date 1 Forecast", "Order Date 2 Forecast", "Order Date 3 Forecast", "Order Date 4 Forecast"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Forecast", Int64.Type}}),
    #"Unpivoted Columns1" = Table.UnpivotOtherColumns(#"Changed Type1", {"Model Name", "Color Name", "Attribute", "Order Date", "Forecast"}, "Attribute.1", "Value"),
    #"Renamed Columns1" = Table.RenameColumns(#"Unpivoted Columns1",{{"Attribute.1", "MQQ"}, {"Value", "MQQ Value"}})
in
    #"Renamed Columns1"

Best Regards,
Community Support Team _ Eason

View solution in original post

1 REPLY 1
v-easonf-msft
Community Support
Community Support

Hi, @SelflearningBi 

Before calculating the difference, you can unpivote the date columns, which saves you from creating multiple similar measure for each date.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUQpKTQGShgYGBkDKGEwa6hvqGxkYGSHEDfWNYSLGBhhqjLDqitWJVnKCWwDTBtNthGGDKYYIphozFFeAbHAGcpxySlOBlCncD2jOMYJKYIggqTGFi6AqgtkRkJmXjRJO2PUbo4jgCEt0K2IB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Model Name" = _t, #"Color Name" = _t, #"MOQ Color" = _t, #"MOQ Model" = _t, #"Order Date 1" = _t, #"Order Date 1 Forecast" = _t, #"Order Date 2" = _t, #"Order Date 2 Forecast" = _t, #"Order Date 3" = _t, #"Order Date 3 Forecast" = _t, #"Order Date 4" = _t, #"Order Date 4 Forecast" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Model Name", type text}, {"Color Name", type text}, {"MOQ Color", Int64.Type}, {"MOQ Model", Int64.Type}, {"Order Date 1", type date}, {"Order Date 1 Forecast", Int64.Type}, {"Order Date 2", type date}, {"Order Date 2 Forecast", Int64.Type}, {"Order Date 3", type date}, {"Order Date 3 Forecast", Int64.Type}, {"Order Date 4", type date}, {"Order Date 4 Forecast", Int64.Type}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Model Name", "Color Name", "MOQ Color", "MOQ Model", "Order Date 1 Forecast", "Order Date 2 Forecast", "Order Date 3 Forecast", "Order Date 4 Forecast"}, "Attribute", "Value"),
    #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Columns",{{"Value", "Order Date"}}),
    #"Added Conditional Column" = Table.AddColumn(#"Renamed Columns", "Forecast", each if [Attribute] = "Order Date 1" then [Order Date 1 Forecast] else if [Attribute] = "Order Date 2" then [Order Date 2 Forecast] else if [Attribute] = "Order Date 3" then [Order Date 3 Forecast] else if [Attribute] = "Order Date 4" then [Order Date 4 Forecast] else null),
    #"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column",{"Order Date 1 Forecast", "Order Date 2 Forecast", "Order Date 3 Forecast", "Order Date 4 Forecast"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Forecast", Int64.Type}}),
    #"Unpivoted Columns1" = Table.UnpivotOtherColumns(#"Changed Type1", {"Model Name", "Color Name", "Attribute", "Order Date", "Forecast"}, "Attribute.1", "Value"),
    #"Renamed Columns1" = Table.RenameColumns(#"Unpivoted Columns1",{{"Attribute.1", "MQQ"}, {"Value", "MQQ Value"}})
in
    #"Renamed Columns1"

Best Regards,
Community Support Team _ Eason

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.