Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
Hello,
I have two tables, forecast & actual, where data is at the country & Product levels. I want to compare how I am doing against the forecast at an aggregate level and by country & product level. It is possible that for a few countries, I don't have a forecast but have actuals vv few countries have forecast but don't have actuals. I am trying to create a 3rd table where I can see all the countries, including ones that have no forecast, but actual vv have forecast but no actuals. The table looks like this.
Forecast table
Country Product Sales
Country 1 product 1 100
Country 2 product 2 200
Country 5 product1 100
Actual table
Country Product Sales
Country 1 product 1 120
Country 4 product 2 220
Country 3 product 1 200
Desired table
Country Product ForecastSales Actual Sales
Country 1 product 1 100 120
Country 2 product 2 200
Country 3 product 1 200
Country 4 product 2 220
Country 5 product1 100
Please help if possible
Thank you.
Solved! Go to Solution.
Hi,
Please check the below picture and the attached pbix file.
New Table =
VAR _country =
DISTINCT (
UNION ( DISTINCT ( ForecastSales[Country] ), DISTINCT ( ActualSales[Country] ) )
)
VAR _product =
DISTINCT (
UNION ( DISTINCT ( ForecastSales[Product] ), DISTINCT ( ActualSales[Product] ) )
)
VAR _countryproduct =
SELECTCOLUMNS (
GENERATE ( _country, _product ),
"@country", [Country],
"@product", [Product]
)
RETURN
FILTER (
ADDCOLUMNS (
_countryproduct,
"@ForecastSales",
CALCULATE (
SUM ( ForecastSales[Sales] ),
FILTER (
ForecastSales,
ForecastSales[Country] = [@country]
&& ForecastSales[Product] = [@product]
)
),
"@ActualSales",
CALCULATE (
SUM ( ActualSales[Sales] ),
FILTER (
ActualSales,
ActualSales[Country] = [@country]
&& ActualSales[Product] = [@product]
)
)
),
[@ForecastSales] <> 0
|| [@ActualSales] <> 0
)
If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.
Hi,
Please check the below picture and the attached pbix file.
New Table =
VAR _country =
DISTINCT (
UNION ( DISTINCT ( ForecastSales[Country] ), DISTINCT ( ActualSales[Country] ) )
)
VAR _product =
DISTINCT (
UNION ( DISTINCT ( ForecastSales[Product] ), DISTINCT ( ActualSales[Product] ) )
)
VAR _countryproduct =
SELECTCOLUMNS (
GENERATE ( _country, _product ),
"@country", [Country],
"@product", [Product]
)
RETURN
FILTER (
ADDCOLUMNS (
_countryproduct,
"@ForecastSales",
CALCULATE (
SUM ( ForecastSales[Sales] ),
FILTER (
ForecastSales,
ForecastSales[Country] = [@country]
&& ForecastSales[Product] = [@product]
)
),
"@ActualSales",
CALCULATE (
SUM ( ActualSales[Sales] ),
FILTER (
ActualSales,
ActualSales[Country] = [@country]
&& ActualSales[Product] = [@product]
)
)
),
[@ForecastSales] <> 0
|| [@ActualSales] <> 0
)
If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.
Thank you very much for your help!
Hey my friend,
You can use a table with
merge =
DISTINCT(UNION(
SELECTCOLUMNS(Table_a, "Coluna1", [Expressão1], "Coluna2", [Expressão2], ...),
SELECTCOLUMNS(Table_b, "Coluna1", [Expressão1], "Coluna2", [Expressão2], ...)
))
If you need all lines, just remove the distinct part.
If it solved your problem, give me a kudo!!! ❤️
Thank you. It gave me the idea to think a bit differently.
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.
User | Count |
---|---|
21 | |
21 | |
19 | |
13 | |
12 |
User | Count |
---|---|
42 | |
28 | |
23 | |
22 | |
22 |