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

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.

Reply
kbol
Frequent Visitor

Cuente con la tabla Dim basada en el filtrado de tablas de hechos

Hola
Tengo un modelo como este:

model.PNG

Mi objetivo es contar el número de filas de la tabla Proyectos que tienen al menos 1 fila correspondiente en StaffProj para una selección determinada de Staff. Mi intento fue esta medida:

Projs With Selected Staff = COUNTROWS(FILTER(
    Projects,
    COUNTROWS(StaffProj)
))

Esta medida en su lugar simplemente produce un recuento de proyectos, independientemente de lo que haga la selección de personal. Para dar un ejemplo, primero sin filtrado (muestra 3 correctamente):

good.PNG

Sin embargo, al filtrar en Staff-B, todavía muestra 3 aunque debería ser 2:

bad.PNG

Reconozco en este modelo que podría obtener esta información puramente de la tabla StaffProj, pero la situación/modelo real es más compleja. ¿Por qué no funciona este enfoque y hay una forma alternativa de obtener los recuentos correctos "de" la tabla Proyectos?

4 REPLIES 4
v-eachen-msft
Community Support
Community Support

Hola @kbol ,

Podrías probar la siguiente medida.

Projs With Selected Staff =
CALCULATE (
    DISTINCTCOUNT ( 'StaffProj'[Project] ),
    ALLSELECTED ( 'Staff'[Name] )
)

Aquí está el resultado de la prueba.

3-2.PNG3-1.PNG

Community Support Team _ Eads
If this post helps, then please consider Accept it as the solution to help the other members find it.

Hola @v-eachen-msft ,

Gracias, esa idea funciona. Me sorprende bastante que la expresión FILTER en Project en mi intento aparentemente cambia el contexto de tal manera que descarta el filtrado de Staff en StaffProj, pero usando esa idea ALLSELECTED aborda ese problema con esta medida:

Projs With Selected Staff = CALCULATE(
    COUNTROWS(Project),
    FILTER(
        Project,
        CALCULATE(COUNTROWS(StaffProj), ALLSELECTED(Staff))
    )
)

He aceptado su puesto como la solución ya que es más lógico en este escenario. No entiendo completamente por qué necesitamos el ALLSELECTED aquí, pero funciona.

Greg_Deckler
Super User
Super User

Tal vez una columna en la tabla proyecto como:

Count -COUNTROWS(RELATEDTABLE('StaffProj')

A continuación, puede crear una medida:

Recuento de proyectos: COUNTROWS(FILTER('Projects'),[Count] > 0)


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Hola

Me temo que la solución de columna Proyecto no funciona del todo porque el filtrado en Staff puede cambiar y la columna se calcula en el momento de la actualización, incluido todo el personal. Por lo tanto, con los datos anteriores se evalúa como 6 para cada proyecto, cada uno con dos empleados asociados.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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