Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Estoy buscando ayuda en esto.
Tengo 2 mesas. Uno con datos sobre contratos. Esto incluye un identificador de contrato único, fecha de finalización inicial y (potencial) y un código de precios. Se ve así.
Contrato # | Fecha de inicio | Fecha de finalización | Código de precios |
Q | 01-04-2019 | 10-11-2020 | A |
W | 01-08-2018 | 31-12-2999 | A |
E | 06-04-2017 | 31-12-2999 | B |
R | 15-11-2019 | 31-05-2020 | B |
T | 15-06-2020 | 31-12-2999 | C |
Y | 01-08-2020 | 30-09-2020 | C |
También tengo una tabla que incluye los precios históricos por código de precios. Por lo tanto, por código de precios se puede ver el precio para un período determinado. Vea a continuación, el código de precios A cuesta 100 euros del 01-01-2018 al 30-06-2019 y cuesta 110 euros desde el 01-07-2019 hasta el 31-12-2020.
Código de precios | Fecha de inicio | Fecha de finalización | Precio |
A | 01-01-2018 | 30-06-2019 | 100,00 euros |
A | 01-07-2019 | 31-12-2020 | 110,00 euros |
B | 01-01-2017 | 31-12-2019 | 200,00 euros |
B | 01-01-2020 | 31-12-2021 | 205,00 euros |
C | 01-06-2020 | 01-12-2021 | 300,00 euros |
¿Puede alguien ayudarme a conectar de forma eficaz estas 2 tablas en Power BI para informar de los ingresos por contrato al mes.
Algo como esto:
Contrato # | año | Mes | Ingresos |
Q | 2019 | 4 | 100,00 euros |
Q | 2019 | 5 | 100,00 euros |
Q | 2019 | 6 | 100,00 euros |
Q | 2019 | 7 | 110,00 euros |
Q | 2019 | 8 | 110,00 euros |
Q | 2019 | 9 | 110,00 euros |
Q | 2019 | 10 | 110,00 euros |
Q | 2019 | 11 | 110,00 euros |
Q | 2019 | 12 | 110,00 euros |
Q | 2020 | 1 | 110,00 euros |
Q | 2020 | 2 | 110,00 euros |
Q | 2020 | 3 | 110,00 euros |
Q | 2020 | 4 | 110,00 euros |
Q | 2020 | 5 | 110,00 euros |
Q | 2020 | 6 | 110,00 euros |
Q | 2020 | 7 | 110,00 euros |
Q | 2020 | 8 | 110,00 euros |
Q | 2020 | 9 | 110,00 euros |
Gracias de antemano por su ayuda !
Solved! Go to Solution.
Hola @RobertZijlstra ,
Cree una tabla de calendario y una tabla de códigos de precios para realizar la relación entre la tabla con otra y las 2 medidas siguientes:
TotalContract =
VAR Contract_Selected =
SELECTEDVALUE ( Contracts[Contract#] )
VAR dateStart =
MIN ( 'Calendar'[Date] )
VAR dateEnd =
MAX ( 'Calendar'[Date] )
Var Total_Pricing =
CALCULATE (
SUM ( Pricing[Price] ),
Contracts[Contract#] = Contract_Selected,
FILTER (
Contracts,
Contracts[Start Date] <= dateStart
&& Contracts[End Date] >= dateEnd
),
FILTER (
Pricing,
Pricing[Start Date] <= dateStart
&& Pricing[End Date] >= dateEnd
))
return
Total_Pricing
TotalContract_Value =
var CAlendar_Total = SUMMARIZE('Calendar','Calendar'[Year],'Calendar'[Month],"TotalValue", [TotalContract])
var Result = SUMX(CAlendar_Total, [TotalValue])
Return
Result
Ahora sólo tiene que utilizar la medida Total Contract_Value en sus visualizaciones:
Compruebe la conexión del archivo PBIX.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em Português
esto tiene que ver con el contexto hacer lo siguiente, crear una nueva medida para utilizar en su cálculo:
Total_Contract_Values = SUMX(VALUES(Contracts[Contract#]), [TotalContract_Value])
Utilice esta medida en las visualizaciones.
Resultado a continuación y en adjuntar archivo.
Hola Robert,
La medida proporcionada no tiene en cuenta los contratos a nivel total en su matriz. Mientras que a nivel de detalle los contratos ya están filtrados. De ahí la diferencia en los números calculados.
En su lugar, podría intentar:
TotalContract_Value =
VAR ContractCalendarCombinations =
ADDCOLUMNS(
CROSSJOIN(
VALUES( 'Calendar'[Year-Month]),
VALUES( Contracts[Contract#] )
),
"ContractValue", [TotalContract]
)
VAR Result = SUMX(ContractCalendarCombinations, [ContractValue] )
RETURN
Result
Saludos
Rick de Groot
Hola Miguel, genial.... gracias por su ayuda !!!
Hola @RobertZijlstra ,
Cree una tabla de calendario y una tabla de códigos de precios para realizar la relación entre la tabla con otra y las 2 medidas siguientes:
TotalContract =
VAR Contract_Selected =
SELECTEDVALUE ( Contracts[Contract#] )
VAR dateStart =
MIN ( 'Calendar'[Date] )
VAR dateEnd =
MAX ( 'Calendar'[Date] )
Var Total_Pricing =
CALCULATE (
SUM ( Pricing[Price] ),
Contracts[Contract#] = Contract_Selected,
FILTER (
Contracts,
Contracts[Start Date] <= dateStart
&& Contracts[End Date] >= dateEnd
),
FILTER (
Pricing,
Pricing[Start Date] <= dateStart
&& Pricing[End Date] >= dateEnd
))
return
Total_Pricing
TotalContract_Value =
var CAlendar_Total = SUMMARIZE('Calendar','Calendar'[Year],'Calendar'[Month],"TotalValue", [TotalContract])
var Result = SUMX(CAlendar_Total, [TotalValue])
Return
Result
Ahora sólo tiene que utilizar la medida Total Contract_Value en sus visualizaciones:
Compruebe la conexión del archivo PBIX.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsNo @MFelix ,
Si aún así sigues teniendo problemas, problema con... el importe total del Valor del Contrato es incorrecto.
Si echa un vistazo al valor por contrato se ve bien. En su ejemplo:
Q á 4.860 euros
W á 2.060 euros
E á 1.225 euros
R á 1.800 euros
T á 2.580 euros
Y 600 euros
Si agrega estos números, el valor total debe ser de 13,125 euros, pero en la matriz de Power BI se muestra un total de 9,240 euros.
¿Me puedes ayudar?
Gracias de antemano.
Saludos, Robert
esto tiene que ver con el contexto hacer lo siguiente, crear una nueva medida para utilizar en su cálculo:
Total_Contract_Values = SUMX(VALUES(Contracts[Contract#]), [TotalContract_Value])
Utilice esta medida en las visualizaciones.
Resultado a continuación y en adjuntar archivo.
Gracias de nuevo Miguel, pero todavía estoy luchando con un problema.
Con estas fórmulas DAX no hay ingresos en los contratos que comienzan o terminan durante el mes. En mi contrato de ejemplo Q termina en 10-11-2020, así que me gustaría calcular 10/30 del precio mensual. Y el contrato E comienza el 06-04-2017, así que me gustaría calcular 24/30 del precio mensual.
Traté de agregar algo en la fórmula DAX que tomaría en cuenta estas excepciones (inicio o finalización en una fecha aleatoria durante el mes).
Siento preguntarte de nuevo, pero sería genial si puedes ayudarme de nuevo.
Saludos
Robert