Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
En mi modelo de datos tengo una combinación de campos que coinciden con entre dos tablas.
La tabla Tranasction
Org | Oficina | Grupo |
AN01 | HH01 | F01 |
AN01 | HH02 | G03 |
BO02 | KL03 | N03 |
GR01 | NN01 | J01 |
FD02 | KL01 | H01 |
La tabla de precios
Level_1 | Level_2 | Level_3 |
AN01 | ||
BO02 | ||
GR01 | NN01 | |
FD02 | KL01 | H01 |
Sin embargo, en la tabla de precios algunas líneas no tienen todos los campos definidos.
De hecho, la primera línea de la tabla de precios coincidirá con todas las transacciones en las que Org Level_1 (AN01 - AN01)
Mientras que en el caso de la tercera línea de la tabla de precios el enlace entre las dos tablas se basa en 2 columnas:
La organización es Level_1 (GR01 a GR01) y la oficina Level_2 (NN01 a NN01)
Mientras que en el caso de la última línea de la tabla de precios el enlace entre las dos tablas se basa en 3 columnas:
La organización es Level_1 (GR01 a GR01) y la oficina Level_2 (NN01 a NN01) y el grupo Level_3 (H01 a H01)
De hecho, el nivel más bajo de detalle es el interlineado, si no es posible obtener un nivel inferior se debe aplicar el nivel más alto.
¿Cómo se puede compilar esto en esta definición de columna:
Country_Price =
var _dt = maxx(
filter(
Price,
Price[ProductID] = Transaction[ProductID]
&& Price[Level_1] = Transaction[Org]
&& Price[Level_2] = Transaction[Office]
&& Price[Level_3] = Transaction[Group]
&& Price[Date_valid_from] < Transaction[Date]
&& Price[Type of Price] = "Country"
),
Price[Date_valid_from]
)
return maxx(
filter(
Price,
Price[ProductID] = Transaction[ProductID]
&& Price[Level_1] = Transaction[Org]
&& Price[Level_2] = Transaction[Office]
&& Price[Level_3] = Transaction[Group]
&& Price[Date_valid_from] = _dt
&& Price[Type of Price] = "Country"
),
Price [Price]
)
He encontrado una solución:
Country_Price =
var _dt = maxx(
filter(
Price,
Price[ProductID] = Transaction[ProductID]
&& if(
Price[Level_3] = BLANK(),
if(Price[Level_2] = BLANK(),
Price[Level_1] = Transaction[Org],
Price[Level_1] = Transaction[Org]
&& Price[Level_2] = Transaction[Office]
),
Price[Level_1] = Transaction[Org]
&& Price[Level_2] = Transaction[Office]
&& Price[Level_3] = Transaction[Group]
)
&& Price[Date_valid_from] < Transaction[Date]
&& Price[Type of Price] = "Country"
),
Price[Date_valid_from]
)
return maxx(
filter(
Price,
Price[ProductID] = Transaction[ProductID]
&& if(
Price[Level_3] = BLANK(),
if(Price[Level_2] = BLANK(),
Price[Level_1] = Transaction[Org],
Price[Level_1] = Transaction[Org]
&& Price[Level_2] = Transaction[Office]
),
Price[Level_1] = Transaction[Org]
&& Price[Level_2] = Transaction[Office]
&& Price[Level_3] = Transaction[Group]
)
&& Price[Date_valid_from] = _dt
&& Price[Type of Price] = "Country"
),
Price [Price]
)
Hola @BasB ,
¿Podría compartir sus datos de muestra y el resultado esperado para mí si no tiene ninguna información confidencial? Cargue sus archivos en OneDrive para la Empresa y comparta el enlace aquí.