Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola, espero que todos lo estén haciendo bien.
Estoy tratando de envolver mi cabeza alrededor de algo, que es usar una medida como filtro en la función de cálculo. He entendido que necesito agregar FILTER para poder usar una medida como filtro en la función de cálculo, pero no me da los resultados que necesito.
#1 Para mi realización, me gustaría conocer el total de facturas, con la condición de que haya habido 0 AutoPurchasedInvoices y 0 RepeatedPurchases. Entonces, por ejemplo, cuando un proveedor tiene 1000 facturas y solo 1/1000 tiene AutoPurchasedInvoices=1 o RepeatedPurchases=1, entonces mi resultado debería ser 0.
Si otro proveedor tiene 50 facturas y 50/50 tiene AutoPurchasedInvoices=0 y RepeatedPurchase=0, entonces mi resultado debería ser 50. (Esta medida debe llamarse mis PotentialInvoices).
#2 Después de esto, también me gustaría escribir una medida que me dé el total de proveedores distintos que tienen PotentialInvoices.
Lo que he hecho hasta ahora es crear estas medidas:
Total de facturas = Recuento(InvoiceID)
Total de facturas autocompradas = suma(IsAutoPurchased)
Total de facturas de compra repetidas = suma(IsRepeatedPurchase)
AutoCompchaed+RepeatedPurchase = Total de facturas de autocompra + Total de facturas de compra repetidas
Total de PotencialInvoces = calculate(TotalInvoices),Filter([Tabla],AutoCompchased+RepeatedPurchase=0)
Total DistintPotentialSuppliers = ?
Mis datos se ven así
InvoiceID | País | Nombre del proveedor | IsAutoPurchased | IsRepeatedPurchase |
1 | NOS | Amazona | 0 | 0 |
2 | NOS | Amazona | 1 | 0 |
4 | NOS | Ebay | 0 | 0 |
5 | NOS | Wallmart | 0 | 1 |
6 | NL | Dixons | 0 | 0 |
7 | NL | Dixons | 0 | 0 |
8 | SER | Morena | 0 | 0 |
9 | SER | Saboya | 0 | 0 |
Este es mi resultado deseado
País | Total de facturas | Total de PotencialInvoces | DistintosPotencialesSupermisarios |
NOS | 4 | 1 | 1 |
NL | 2 | 2 | 1 |
SER | 2 | 2 | 2 |
Te agradezco por investigar esto y ayudarme. Creo que me falta algo de pensamiento lógico para realizar este requisito.
Hi, @DeBIe ;
No estoy seguro de si entiendo su lógica correctamente. Según tengo entendido, puede intentar crear la siguiente medida.
Measure = IF( CALCULATE(SUM([IsAutoPurchased])+SUM([IsRepeatedPurchase]),FILTER(ALL('Table'),[Country]=MAX([Country])&&[SupplierName]=MAX([SupplierName])))=0,1,0)
Total PotentialInvoices = SUMX(FILTER(ALL('Table'),[Country]=MAX([Country])),[Measure])
Total DistintPotentialSuppliers = CALCULATE(DISTINCTCOUNT([SupplierName]),FILTER(ALL('Table'),[Country]=MAX([Country])&&[Measure]=1))
El resultado final se muestra a continuación:
Saludos
Apoyo a la comunidad Team_ Yalan Wu
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hola @v-yalanwu-msft , gracias por su respuesta.
Parece que sus medidas dan el resultado correcto en su modelo. Sin embargo, olvidé mencionar que mi columna de país y proveedor proviene de tablas de búsqueda separadas. No sé cómo reescribir su primera medida para que el filtro se aplique para dos tablas diferentes (tabla País y tabla Proveedor). Los valores InvoiceID, facturas totales, IsAutoPurchased e IsRepeatedOrder están en mi tabla de hechos.
¿Sabes cómo puedo reescribir esto para que funcione para mi modelo?
Muchas gracias.
Hi, @DeBIe ;
Lamento no tener muy clara la estructura de su modelo. ¿Podría tomar una captura de pantalla o modificarla en mi Simple?
Si de diferentes tablas, ¿cuál es su relación? ¿Tendrán diferentes países el mismo nombre de proveedor?
Saludos
Apoyo a la comunidad Team_ Yalan Wu
He configurado un modelo de ejemplo. No estoy seguro de si puedes descargar el modelo. Mi primera vez haciendo esto a través de Google Drive.
https://drive.google.com/file/d/1fjD9jzxNNf-SV-GcKzciKPKzgMhc3VVo/view?usp=sharing
Hi, @DeBIe ;
Pruébalo;
measure = CALCULATE(SUM([IsAutoPurchased])+SUM([IsRepeatedOrder]),FILTER(ALL('Invoices_Fact'),[Country_id]=MAX([Country_id])&&[Supplier_id]=MAX([Supplier_id])))
Total PotentialInvoices = COUNTX(FILTER(ALL('Invoices_Fact'),[Country_id]=MAX([Country_id])&&[measure]=0),[InvoiceID])
Total DistintPotentialSuppliers = CALCULATE(DISTINCTCOUNT('Invoices_Fact'[Supplier_id]),FILTER(ALL('Invoices_Fact'),[Country_id]=MAX([Country_id])&&[Measure]=0))
El resultado final se muestra a continuación:
Saludos
Apoyo a la comunidad Team_ Yalan Wu
Si esta publicación ayuda,entonces considere Aceptarla como la soluciónpara ayudar a los otros miembros a encontrarla más rápidamente.
Hola @amitchandak
¿Alguna otra idea sobre por qué no está funcionando para mí? Todavía no puedo hacer que funcione y no tengo ni idea de lo que está pasando aquí.
Gracias por su tiempo.
@DeBIe , Necesita forzar el contexto de la factura
calculate(Countx(Filter( values(Table[InvoiceID] ),[AutoPurchased]+[RepeatedPurchase]=0), [TotalInvoices]))
Gracias por responder. He implementado su medida sugerida, pero no me da el resultado correcto. Vea la imagen a continuación. El disco que destaqué debería ser el único que quiero mostrar.
Los otros no deben ser PotentialInvoices porque tienen AutoCompchaed o RepreatedPurchase >0.
Esta es la medida para las posibles incidencias: