Forum Discussion
Problema de Dax
Hola a todos
En esta captura de pantalla se inicia el pedido del cliente y el éxito del pago está en el mismo txn id que queremos que se complete la transacción o de lo contrario el cliente es solo el pedido iniciado que queremos que el pago falle.
txn_oid 10 < order_initiated
txn_oid 10 y Payment_success
txn_oid 2 y order_initiated
queremos txn_oid 10o completado
queremos txn_oid 2 - pago fallido
En este éxito de pago o fracaso queremos nueva columna, así que por favor me ordena
Hola,@Muthuvel_s
De acuerdo con su descripción, creo que puede crear una columna para calcular el resultado deseado, así:
Column = VAR a = CALCULATETABLE ( DISTINCT ( 'Table'[TXN-OID] ), FILTER ( ALL ( 'Table' ), [TXN-STATUS] = "ORDER_INITIATED" ) ) VAR c = CALCULATETABLE ( DISTINCT ( 'Table'[TXN-OID] ), FILTER ( ALL ( 'Table' ), [TXN-STATUS] = "PAYMENT_SUCCESS" ) ) RETURN IF ( [TXN-OID] IN a && [TXN-OID] IN c, "completed", "payment failed" )O:
Column 2 = VAR a = COUNTROWS ( FILTER ( 'Table', [TXN-OID] = EARLIER ( 'Table'[TXN-OID] ) && [TXN-STATUS] = "ORDER_INITIATED" ) ) VAR b = COUNTROWS ( FILTER ( 'Table', [TXN-OID] = EARLIER ( 'Table'[TXN-OID] ) && [TXN-STATUS] = "PAYMENT_SUCCESS" ) ) RETURN IF ( b > 0 && a > 0, "completed", "payment failed" )Si no resuelve su problema, por favor no dude en preguntarme.
Saludos
Janey Guo
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
4 Replies
- d_gosbell
Super User
Suponiendo que la tabla se denomina 'Transacciones', podría usar una expresión como la siguiente para encontrar el número máximo de fecha y hora actualizada y, a continuación, buscar el estado
Payment Status = var txnOid = [TXN_OID] var maxDate = MAXX( FILTER(ALL(Transactions[TXN_OID], Transactions[STATUS_UPDATE_DATETIME]), Transactions[TXN_OID] = txnOid) , Transactions[STATUS_UPDATE_DATETIME]) var lastStatus = LOOKUPVALUE(Transactions[TXN_STATUS] , Transactions[TXN_OID] , txnOid , Transactions[STATUS_UPDATE_DATETIME], maxDate) return if( lastStatus = "PAYMENT_SUCCESSFUL", "completed", "payment failed")- AnonymousNot applicable
Estoy probando este dax. pero estoy desajustando algún error
- d_gosbell
Super User
Hmm, en una suposición que probablemente significa que tiene al menos 1 TXN_OID que tiene varias filas con el mismo valor de status_update_datetime.
Puede evitarlo haciendo lo siguiente y simplemente comprobando si una de esas filas contiene un estado "PAYMENT_SUCCESSFUL"
Payment Status = var txnOid = [TXN_OID] var maxDate = MAXX( FILTER(ALL(Transactions[TXN_OID], Transactions[STATUS_UPDATE_DATETIME]), Transactions[TXN_OID] = txnOid), Transactions[STATUS_UPDATE_DATETIME]) var lastStatus = COUNTROWS(FILTER(Transactions, Transactions[TXN_STATUS] = "PAYMENT_SUCCESSFUL" && Transactions[TXN_OID] && txnOid && Transactions[STATUS_UPDATE_DATETIME] = maxDate)) return if( lastStatus >= 1 , "completed", "payment failed") - Syndicate_Admin
Administrator
Hola,@Muthuvel_s
De acuerdo con su descripción, creo que puede crear una columna para calcular el resultado deseado, así:
Column = VAR a = CALCULATETABLE ( DISTINCT ( 'Table'[TXN-OID] ), FILTER ( ALL ( 'Table' ), [TXN-STATUS] = "ORDER_INITIATED" ) ) VAR c = CALCULATETABLE ( DISTINCT ( 'Table'[TXN-OID] ), FILTER ( ALL ( 'Table' ), [TXN-STATUS] = "PAYMENT_SUCCESS" ) ) RETURN IF ( [TXN-OID] IN a && [TXN-OID] IN c, "completed", "payment failed" )O:
Column 2 = VAR a = COUNTROWS ( FILTER ( 'Table', [TXN-OID] = EARLIER ( 'Table'[TXN-OID] ) && [TXN-STATUS] = "ORDER_INITIATED" ) ) VAR b = COUNTROWS ( FILTER ( 'Table', [TXN-OID] = EARLIER ( 'Table'[TXN-OID] ) && [TXN-STATUS] = "PAYMENT_SUCCESS" ) ) RETURN IF ( b > 0 && a > 0, "completed", "payment failed" )Si no resuelve su problema, por favor no dude en preguntarme.
Saludos
Janey Guo
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.