Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

No obtener resultados válidos al usar calcular con el filtro de medida

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í

InvoiceIDPaísNombre del proveedorIsAutoPurchasedIsRepeatedPurchase
1NOSAmazona00
2NOSAmazona10
4NOSEbay00
5NOSWallmart01
6NLDixons00
7NLDixons00
8SERMorena00
9SERSaboya00

Este es mi resultado deseado

PaísTotal de facturasTotal de PotencialInvocesDistintosPotencialesSupermisarios
NOS411
NL221
SER222

Te agradezco por investigar esto y ayudarme. Creo que me falta algo de pensamiento lógico para realizar este requisito.

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

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:

vyalanwumsft_0-1642750662172.png


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:

vyalanwumsft_0-1643160699034.png


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.

Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

@DeBIe , Necesita forzar el contexto de la factura

calculate(Countx(Filter( values(Table[InvoiceID] ),[AutoPurchased]+[RepeatedPurchase]=0), [TotalInvoices]))

@amitchandak ,

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:

PotentialInvoices = CALCULAR(COUNTX(FILTRO(VALORES(Tabla[InvoiceID]),([Autocomprado]+[Compra repetida])=0),[TotalInvoices]))

Screenshot_1.png

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors