计算每个产品的制造 - DAX MEASURE

Calculate Fabrication per Product - DAX MEASURE

我有 this 个 PBIX 文件夹。

在此文件夹中,您将找到 PBIX 文件和源数据。

编辑:

请参阅此处的示例数据:

    TxDate | Reference | Code | ItemGroup | Quantity | Sales
__________________________________________________________________________
    24/02/2021 | AJI237677 | 2490/1008/999 |  | 1 | 342144.5
    28/02/2021 | AJI238993 | 1500/9999/999 |  | 1 | 140000
    13/04/2021 | AJI239912 | ATGS - Cut Pull Down | fabrication | 4 | 100
    13/04/2021 | AJI239912 | AC  760 200 15060  A | Alu-Ext-Std-Mil | 8 | 2512
    13/04/2021 | AJI239912 | AC  760 200 15060  A | Alu-Ext-Std-Mil | 6 | 1884
    13/04/2021 | AJI239916 | ATGS - Cut Guilotine | fabrication | 2 | 250
    13/04/2021 | AJI239917 | ATC252  SQR    60  A | Alu-Ext-Spe | 1 | 307
    13/04/2021 | AJI239917 | ATGH - 25MM3TA | Hardware | 8 | 256
    13/04/2021 | AJI239927 | ATGS - Cut Pull Down | fabrication | 1 | 0
    13/04/2021 | AJI239927 | AAE 127 127 16060  A | Alu-Ext-Std | 4 | 324
    13/04/2021 | AJI239929 | AHS 200 200 15060  A | Alu-Ext-Spe | 2 | 430
    13/04/2021 | AJI239929 | ATGS - Cut Pull Down | fabrication | 1 | 0
    13/04/2021 | AJI239933 | ATGH - 19MMSQCPC | Hardware | 4 | 56
    13/04/2021 | AJI239933 | AHS 200 200 15060  A | Alu-Ext-Spe | 1 | 215
    13/04/2021 | AJI239933 | AAU 500 250 16060  A | Alu-Ext-Std-Mil | 1 | 255
    13/04/2021 | AJI239947 | AXSTAIRNOSING | Alu-Ext-Spe | 3 | 915
    13/04/2021 | AJI239947 | ATGS - Cut Pull Down | fabrication | 1 | 0
    13/04/2021 | AJI239947 | ATGH - SEIBLACK | Hardware | 30 | 240
    13/04/2021 | AJI239950 | AS   202500125050    | Alu-Rol--She-Mil | 1 | 1240
    13/04/2021 | AJI239957 | ATGS - Cut Guilotine | fabrication | 7 | 175
    13/04/2021 | AJI239957 | AS   092500125050 P | Alu-Rol--She-Pre | 1 | 596
    13/04/2021 | AJI239966 | AC  444 190 16060  A | Alu-Ext-Std-Mil | 1 | 252

使用此示例数据,我相信您将能够复制它。

我需要能够计算制造销售额。

为了解释这一点,每个产品项目都出售给客户,但有时需要进行此项目的制造,即焊接、弯曲等。

因此对于某些发票(参考),产品是加工销售的。

客户要求查看每个项目的 Total Fabrication Sales 和 Fabrication Sales 的平均百分比,即 Fabrication 占总发票的百分比。

在 SQL 中使用以下脚本,我能够复制所需的结果:

with source as (
select
    Code
,   (select sum(ActualSalesValue) from _bvSTTransactionsFull t join _bvStockFull s on t.AccountLink = s.StockLink and ItemGroup = 'Fabrication' and tx.Reference = t.Reference and TxDate between '2020-03-01' and '2021-02-28') FabricationSales
,   (select sum(ActualSalesValue) from _bvSTTransactionsFull t join _bvStockFull s on t.AccountLink = s.StockLink and ItemGroup <> 'Fabrication' and tx.Reference = t.Reference and TxDate between '2020-03-01' and '2021-02-28') OtherSales
,   (select sum(ActualSalesValue) from _bvSTTransactionsFull t join _bvStockFull s on t.AccountLink = s.StockLink and tx.Reference = t.Reference and TxDate between '2020-03-01' and '2021-02-28') TotalSales
from    _bvSTTransactionsFull tx join _bvStockFull st on tx.AccountLink = st.StockLink
)
, results as (
select
    Code
,   isnull(round(sum(FabricationSales),2),0)    FabricationSales
,   isnull(round(sum(OtherSales),2),0)          OtherSales
,   isnull(round(sum(TotalSales),2),0)          TotalSales
from    source
group by
    Code
)

select
*
,   isnull(iif(isnull(TotalSales,0)=0,0,FabricationSales/TotalSales),0) [Fabrication%]
from    results
where   FabricationSales>0

结果如下所示:

我需要使用 DAX 公式复制它。

我正在使用此度量计算销售额:Sales = SUM( Sales[Sales] )

然后我使用此度量按项目组筛选销售额:

Fabrication Sales = 
CALCULATE( [Sales],
    FILTER( ProductGroups, ProductGroups[StGroup] = "Fabrication" )
)

我已经尝试了以下措施来获得我需要的结果,但我似乎无法做到正确:

Actual Fabrication Sales = 
VAR InvoiceSales = SUMMARIZE( Sales, Sales[Reference], Products[Code], "InvSales", [Fabrication Sales] )
VAR TotalInvSales = SUMX( InvoiceSales, [InvSales] )
VAR ProductSales = SUMMARIZE( InvoiceSales, Products[Code], "ProductSales", TotalInvSales )
VAR Results = SUMX( ProductSales, [ProductSales] )
RETURN
Results

拜托,是否有人可以帮助我使用正确的 DAX 公式来获得所需的结果?

如果我能得到正确的 DAX 公式来计算制造销售,我就能计算出数量和百分比。

编辑:

@msta42a 回答的预期结果:

好吧,也许我错过了什么,但我们开始吧。我将其分为 3 个度量:首先,我在参考范围内搜索 Fabrication ItemGroup 的销售额总和 [在此示例中 = AJI239912]。其次,我在此范围内搜索所有其他 ItemGroup。最后,除以一个百分比。

Fabrication Sales = 
CALCULATE( SUM(Sales[Sales]),
    FILTER( ALL(Sales[ItemGroup], Sales[Reference], Sales[Code]), Sales[ItemGroup] = "Fabrication"  && Sales[Reference] = SELECTEDVALUE(Sales[Reference]))
)

Other Sales = 
CALCULATE( SUM(Sales[Sales]),
    FILTER( ALL(Sales[ItemGroup], Sales[Reference], Sales[Code]), Sales[ItemGroup] <> "Fabrication"  && Sales[Reference] = SELECTEDVALUE(Sales[Reference]))
)

Fabrication% = DIVIDE([Fabrication Sales],[Other Sales],0)