Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Tengo una tabla de hechos Sales y una tabla de hechos AccountActivity. Ventas y AccountActicity tienen relaciones con una dimensión de cuenta compartida. Tengo una medida que calcula las ventas
Sales = SUM('Sales'[Sales Amount])
Ahora quiero una nueva medida Sales2 que calcule Sales, pero solo para las cuentas que han tenido Flag1 >0 (de hecho, tabla AccountActivity) en el período de filtro. Lo intenté
Sales = CALCULATE([Sales], 'AccountActivity'[Flag1] > 0)
pero esto da los mismos valores que [Ventas]. ¿Cómo puedo lograrlo?
En SQL, usaría la cláusula WHERE EXISTS para limitar la consulta Sales a solo las cuentas que cumplían la condición de Flag1. Así que probé esta medida a continuación. Primero obtengo una lista distinta de números de cuenta en una variable. Luego utilizo CALCULATE pasando la variable como filtro. Pero esto no funciona y da el mismo número que antes.
Sales2 =
VAR _ActWithFlag = SUMMARIZE(FILTER('AccountActivity','AccountActivity'[Flag1] > 0), 'AccountActivity'[AccountNo])
RETURN CALCULATE([Sales], _ActWithFlag)
¿Alguna sugerencia?
Solved! Go to Solution.
Hola, @EylesIT
Basándome en su desription, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.
AccountActivity:
Transacciones:
Puede crear una tabla calculada como se muestra a continuación.
Table =
FILTER(
SUMMARIZE(
Transactions,
Transactions[AccountNo],
Transactions[TxMonth],
"Sum",
SUM(Transactions[TxAmt])
),
SUMX(
FILTER(
ALL(AccountActivity),
[AccountNo]=EARLIER(Transactions[AccountNo])&&
[ActivityMonth]=EARLIER(Transactions[TxMonth])
),
AccountActivity[Flag1]
)>0
)
Resultado:
Saludos
Allan
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola, @EylesIT
Basándome en su desription, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.
AccountActivity:
Transacciones:
Puede crear una tabla calculada como se muestra a continuación.
Table =
FILTER(
SUMMARIZE(
Transactions,
Transactions[AccountNo],
Transactions[TxMonth],
"Sum",
SUM(Transactions[TxAmt])
),
SUMX(
FILTER(
ALL(AccountActivity),
[AccountNo]=EARLIER(Transactions[AccountNo])&&
[ActivityMonth]=EARLIER(Transactions[TxMonth])
),
AccountActivity[Flag1]
)>0
)
Resultado:
Saludos
Allan
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @EylesIT ,
¿Su 'AccountActivity'[Flag1] es un número o una columna de texto?
También tenga en cuenta que las medidas se basan en el contexto, por lo que si tiene filtros, segmentaciones de datos, columnas o cualquier otro tipo de información que pueda influir en el resultado y en lugar de realizar un filtro directo a la tabla debe hacer un ALL o ALLSELECTED.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsFlag1 es entero. La condición que estoy buscando es Flag1 > 0.
Hola @EylesIT ,
Pruebe el siguiente código:
Sales2 =
VAR _ActWithFlag = SUMMARIZE(FILTER('AccountActivity','AccountActivity'[Flag1] > 0), 'AccountActivity'[AccountNo], "@Sales", [Sales])
RETURN SUMX(_ActWithFlag, [@Sales])
Si esto no funciona, puede compartir por favor un dato de maqueta o muestra de su archivo PBIX y el resultado esperado. Puede utilizar un onedrive, google drive, que transferimos o enlace similar para cargar sus archivos.
Si la información es confidencial, compártala a través de un mensaje privado.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsAquí hay algunos datos de prueba
DROP TABLE IF EXISTS #transactions
CREATE TABLE #transactions(AccountNo VARCHAR(10), TxDate DATE, TxMonth VARCHAR(10), TxType VARCHAR(10), TxAmt NUMERIC(10,2))
insert #Transactions select 'ABC','2020-01-01','2020-01','Sale',101
insert #Transactions select 'ABC','2020-01-07','2020-01','Refund',513
insert #Transactions select 'ABC','2020-01-14','2020-01','Sale',183
insert #Transactions select 'ABCD','2020-01-02','2020-01','Sale',201
insert #Transactions select 'ABCD','2020-01-21','2020-01','Sale',724
insert #Transactions select 'ABCD','2020-01-25','2020-01','Interest',184
insert #Transactions select 'ABC','2020-02-02','2020-02','Sale',8126
insert #Transactions select 'ABC','2020-02-07','2020-02','Sale',652
insert #Transactions select 'ABC','2020-02-08','2020-02','Sale',13
insert #Transactions select 'ABCD','2020-02-15','2020-02','Interest',356
insert #Transactions select 'ABCD','2020-02-22','2020-02','Sale',124
insert #Transactions select 'ABCD','2020-02-26','2020-02','Sale',245
DROP TABLE IF EXISTS #accountactivity
CREATE TABLE #accountactivity(AccountNo VARCHAR(10), ActivityDate DATE, ActivityMonth VARCHAR(10), Flag1 INT)
insert #accountactivity select 'ABC','2020-01-01','2020-01',0
insert #accountactivity select 'ABC','2020-01-02','2020-01',0
insert #accountactivity select 'ABC','2020-01-03','2020-01',0
insert #accountactivity select 'ABC','2020-01-04','2020-01',0
insert #accountactivity select 'ABC','2020-01-05','2020-01',0
insert #accountactivity select 'ABC','2020-01-06','2020-01',0
insert #accountactivity select 'ABC','2020-01-07','2020-01',0
insert #accountactivity select 'ABCD','2020-01-01','2020-01',0
insert #accountactivity select 'ABCD','2020-01-02','2020-01',0
insert #accountactivity select 'ABCD','2020-01-03','2020-01',0
insert #accountactivity select 'ABCD','2020-01-04','2020-01',5
insert #accountactivity select 'ABCD','2020-01-05','2020-01',0
insert #accountactivity select 'ABCD','2020-01-06','2020-01',0
insert #accountactivity select 'ABCD','2020-01-07','2020-01',0
insert #accountactivity select 'ABC','2020-02-01','2020-02',0
insert #accountactivity select 'ABC','2020-02-02','2020-02',0
insert #accountactivity select 'ABC','2020-02-03','2020-02',0
insert #accountactivity select 'ABC','2020-02-04','2020-02',1
insert #accountactivity select 'ABC','2020-02-05','2020-02',0
insert #accountactivity select 'ABC','2020-02-06','2020-02',0
insert #accountactivity select 'ABC','2020-02-07','2020-02',0
insert #accountactivity select 'ABCD','2020-02-01','2020-02',0
insert #accountactivity select 'ABCD','2020-02-02','2020-02',0
insert #accountactivity select 'ABCD','2020-02-03','2020-02',0
insert #accountactivity select 'ABCD','2020-02-04','2020-02',0
insert #accountactivity select 'ABCD','2020-02-05','2020-02',0
insert #accountactivity select 'ABCD','2020-02-06','2020-02',0
insert #accountactivity select 'ABCD','2020-02-07','2020-02',0
SELECT t.AccountNo
,t.TxMonth
,SUM(t.TxAmt) AS Sales
FROM #transactions AS t
WHERE t.TxType = 'Sale'
AND EXISTS(SELECT 1 FROM #accountactivity AS a WHERE a.AccountNo = t.AccountNo AND t.TxMonth = a.ActivityMonth AND a.Flag1 > 0)
GROUP BY t.AccountNo, t.TxMonth
Este SQL da los resultados correctos:
Cargo estos datos de prueba en Power BI y creo la medida y los dejo caer en un objeto visual de tabla.
Sales With Flag1 GT 0 =
VAR _AcInArr = SUMMARIZE(
FILTER('AccountActivity', AccountActivity[Flag1] > 0)
, 'AccountActivity'[AccountNo]
, "@Sales", [Sales]
)
RETURN
SUMX(_AcInArr, [@Sales])
pero esto no devuelve nada
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |