Forum Discussion
urgent help needed
- 1 year ago
Hi tkavitha911
Demurrage_Cost = SWITCH( TRUE(), 'Table'[Day_at_port] <= 'Table'[FREE days], 0, 'Table'[Markets] = "Australia", ('Table'[Day_at_port] - 7) * 50 * 'Table'[Count of Container Number], 'Table'[Markets] = "Korea", ('Table'[Day_at_port] - 7) * 24 * 'Table'[Count of Container Number], 'Table'[Markets] = "China", VAR ExtraDays = 'Table'[Day_at_port] - 14 VAR Charge = SWITCH( TRUE(), ExtraDays <= 4, 0, ExtraDays <= 12, (ExtraDays - 4) * 96, (8 * 96) + (ExtraDays - 12) * 125 ) RETURN Charge * 'Table'[Count of Container Number], 'Table'[Markets] = "Shenzhen", VAR ExtraDays = 'Table'[Day_at_port] - 14 VAR Charge = SWITCH( TRUE(), ExtraDays <= 4, 0, ExtraDays <= 12, (ExtraDays - 4) * 96, (8 * 96) + (ExtraDays - 12) * 125 ) RETURN Charge * 'Table'[Count of Container Number], BLANK() )The SWITCH(TRUE(), ...) structure allows for flexible multi-condition evaluation.
For each market, we calculate ExtraDays by subtracting the free threshold from Day_at_port.
Based on tiered rate structures, we apply the appropriate cost calculations and multiply by container count.
This formula assumes you're applying it in a table with fields like Markets, Day_at_port, FREE days, and Count of Container Number. Adjust field names if yours differ. You can convert this into a measure with additional aggregation (e.g., SUMX) if needed at the visual level.
Hi tkavitha911 ,
I hope you have below tables: 1.Fact Table - with columns - MovementID, Market,ContainerCount,DayAtPort
2.Table with Demurrage Rates information - with columns -Market,FreeDays,FlatRate,Rate_15_18,Rate_19_26,Rate_Over26
3.Create a calculated column as below:
DemurrageCost =
VAR Market = 'ContainerMovements'[Market]
VAR DaysAtPort = 'ContainerMovements'[DayAtPort]
VAR FreeDays = RELATED('DemurrageRates'[FreeDays])
VAR ExtraDays = MAX(0, DaysAtPort - FreeDays)
VAR ContainerCount = 'ContainerMovements'[ContainerCount]
RETURN
SWITCH(
TRUE(),
// Australia: Flat rate after free days
Market = "Australia" && ExtraDays > 0,
ExtraDays * RELATED('DemurrageRates'[FlatRate]) * ContainerCount,
// Korea: Flat rate after free days
Market = "Korea" && ExtraDays > 0,
ExtraDays * RELATED('DemurrageRates'[FlatRate]) * ContainerCount,
// China: Tiered rates
Market = "China" && ExtraDays > 0,
VAR Days_19_26 = MIN(8, MAX(0, ExtraDays - 4))
VAR Days_Over26 = MAX(0, ExtraDays - 12)
RETURN (Days_19_26 * RELATED('DemurrageRates'[Rate_19_26]) + Days_Over26 * RELATED('DemurrageRates'[Rate_Over26])) * ContainerCount,
// Shenzhen: Same as China but different rates
Market = "Shenzhen" && ExtraDays > 0,
VAR Days_19_26 = MIN(8, MAX(0, ExtraDays - 4))
VAR Days_Over26 = MAX(0, ExtraDays - 12)
RETURN (Days_19_26 * RELATED('DemurrageRates'[Rate_19_26]) + Days_Over26 * RELATED('DemurrageRates'[Rate_Over26])) * ContainerCount,
// Default: No charge
0
)