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
Hennadii
Helper IV
Helper IV

Tabla de filtros basada en tabla relacionada con relación inactiva

Datos iniciales

Se adjunta un modelo de datos con relaciones y un borrador de una página de informe.

Model.png

Page view.png

Objetivo
Cuando un Período seleccionado en una segmentación de datos (de una lista), las tablas Acciones creadas y Acciones cerradas deben filtrarse adecuadamente:
Acciones creadas: muestra las acciones creadas dentro del Período seleccionado;

Acciones cerradas: muestra las acciones cerradas dentro del Período seleccionado.

Entiendo que, entiendo, debe utilizarse USERELATIONSHIP dentro de la función CALCULATE. Pero estoy confundido para escribir una expresión completa para cada tabla.

Created Actions =
CALCULATE (
     ... 
     USERELATIONSHIP ( 'Actions'[Created On], 'Calendar'[Date] )
)

Closed Actions =
CALCULATE (
     ... 
     USERELATIONSHIP ( 'Actions'[Closed On], 'Calendar'[Date] )
)


Por favor, ayúdame a crear y filtrar tablas Acciones creadas y Acciones cerradas.

Ejemplo

Datos

Períodos

Id Nombre del período Fecha de inicio Fecha de finalización
1 Período 1 01/01/2020 01/10/2020
2 Período 2 01/11/2020 01/20/2020

Fechas y períodos

Fecha Period
01/01/2020 Período 1
.... Período 1
01/10/2020 Período 1
01/11/2020 Período 2
... Período 2
01/20/2020 Período 2

Actions

Id Descripción Creado en Cerrado activado
1 Acción 1 01/01/2020 01/25/2020
2 Acción 2 01/10/2020 01/11/2020
3 Acción 3 01/15/2020 01/20/2020
4 Acción 4 01/16/2020

Resultado esperado

#1 de caso - Período seleccionado 1 (01/01 - 01/10).Un contenido de las dos tablas es el siguiente:

Acciones creadas:

Id Acción
1 Acción 1 (01/01 - 01/25)
2 Acción 2 (01/10 - 01/11)

Acciones cerradas:

(tabla en blanco)

Asunto#2 - período 2 seleccionado (01/11 - 01/20).

Un contenido de las dos tablas es el siguiente:

Tabla de acciones creadas:

Id Acción
3 Acción 3 (01/15 - 01/20)
4 Acción 4 (01/16 - en blanco)

Acciones cerradas:

Id Acción
2 Acción 2 (01/10 - 01/11)
3 Acción 3 (01/15 - 01/20)

1 ACCEPTED SOLUTION

Gracias a todos por la ayuda @amitchandak , @parry2k , @v-shex-msft


¡Tengo la solución!
Lo dejaré aquí por si alguien más se enfrenta a la misma situación:

Procedí con la solución para crear tabla intermedia como sigue

Dates and Actions = 
VAR _calendar = 
    CALENDAR( MIN( 'Actions'[Created On]), MAX( 'Actions'[Closed On] ) )
RETURN
    SELECTCOLUMNS(
        FILTER (
            CROSSJOIN('Actions', _calendar),
            'Actions'[Created On] = [Date] ||
            'Actions'[Closed On] = [Date]
        ),
        "Action ID", 'Actions'[Action ID],
        "Date", [Date],
        "Event" , IF('Actions'[Created On] = [Date], "Created", "Closed" )
    )

La tabla Fechas y acciones debe tener relaciones como en el post anterior.

En una página de informe necesario para:

  1. Suelte la columna ID de acción de la tabla Fechas y acciones;
  2. Asegúrese de que aparece como Tabla;
  3. Expanda el panel Filtro y suelte Evento de la tabla Fechas y acciones en la sección "Agregar campos de datos aquí";
  4. Haga una copia de la tabla;
  5. Asigne un nombre a una tabla como Acciones creadas y seleccione Creado en el panel Filtro;
  6. Asigne un nombre a otra tabla como Acciones cerradas y seleccione Cerrado en el panel Filtro.

Filter by Event.png

Después de eso, seleccionando un Período en la segmentación de datos, solo las Acciones creadas y cerradas dentro del período se mostrarán en dos tablas.

P.D. Estoy seguro de que debería haber una manera de resolverlo usando relaciones inactivas sin crear una tabla de fechas y acciones adicional.

Estoy seguro de ello, porque si se establece una relación activa entre Actions[Created On] y Calendar[Date] (consulte Modelo de datos en la primera publicación), la tabla Actions de una página de informe se filtra a solo Created actions for the selected Period.

Y se puede filtrar para mostrar solo las acciones cerradas si cambia la relación activa a Acciones[Cerrado encendido] y Calendario[Fecha]

Desgraciadamente, no hay manera de mantener ambas relaciones como activas ...

Le daré kudo y estableceré "Aceptar como solución" si alguien propone cómo hacerlo a través de relaciones inactivas.

View solution in original post

10 REPLIES 10
v-shex-msft
Community Support
Community Support

HI @Hennadii,

Me gustaría sugerirle que cree tablas calculadas para expandir el rango de registros de tablas sin procesar y puede usarlas para vincular tablas y calendarios sin procesar. Debe ayudar a hacer otro análisis avanzado.

Distribuya los ingresos a lo largo del período en función de la fecha de inicio y finalización, cort...

saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Hola @v-shex-msft , que podría ser una manera de solución. Pero no me da el resultado esperado por ahora.


Creé la tabla adicional como usted sugirió en el post que usted mencionó.

Dates and Actions = 
VAR _calendar = 
    CALENDAR( MIN( 'Actions'[Created On]), MAX( 'Actions'[Closed On] ) )
RETURN
    SELECTCOLUMNS(
        FILTER (
            CROSSJOIN('Actions', _calendar),
            'Actions'[Created On] <= [Date] &&
            'Actions'[Closed On] >= [Date]
        ),
        "Action ID", 'Actions'[ID],
        "Date", [Date]
    )

Aquí adjunto modelo actualizado. Una nota a las fechas:

  • Fecha de inicio y Fecha de finalización en la tabla Período no se superponen entre sí --> relación 1-1 entre calendario y fechas y períodos.
  • Creado en y cerrado en la tabla Acciones se pueden superponer entre sí --> relación 1-* entre Calendario y Fechas y Acciones.
    Model_v2.png

Cuando coloco el ID de acción de Fechas y acciones en la página de informe (en una vista de tabla) y selecciono un Período de una segmentación de datos, se muestran todos los ID de acciones que se superponen a las fechas de inicio y finalización del períodoseleccionado.

En ese caso, si la Acción 1 tiene fechas 01/01 - 30/01 y fechas de Período 01/10 - 01/20, la Acción 1 se mostrará en los resultados, pero no es correcta, ya que solo necesito ver las Acciones que se cerraron o crearon en el período seleccionado.

Gracias a todos por la ayuda @amitchandak , @parry2k , @v-shex-msft


¡Tengo la solución!
Lo dejaré aquí por si alguien más se enfrenta a la misma situación:

Procedí con la solución para crear tabla intermedia como sigue

Dates and Actions = 
VAR _calendar = 
    CALENDAR( MIN( 'Actions'[Created On]), MAX( 'Actions'[Closed On] ) )
RETURN
    SELECTCOLUMNS(
        FILTER (
            CROSSJOIN('Actions', _calendar),
            'Actions'[Created On] = [Date] ||
            'Actions'[Closed On] = [Date]
        ),
        "Action ID", 'Actions'[Action ID],
        "Date", [Date],
        "Event" , IF('Actions'[Created On] = [Date], "Created", "Closed" )
    )

La tabla Fechas y acciones debe tener relaciones como en el post anterior.

En una página de informe necesario para:

  1. Suelte la columna ID de acción de la tabla Fechas y acciones;
  2. Asegúrese de que aparece como Tabla;
  3. Expanda el panel Filtro y suelte Evento de la tabla Fechas y acciones en la sección "Agregar campos de datos aquí";
  4. Haga una copia de la tabla;
  5. Asigne un nombre a una tabla como Acciones creadas y seleccione Creado en el panel Filtro;
  6. Asigne un nombre a otra tabla como Acciones cerradas y seleccione Cerrado en el panel Filtro.

Filter by Event.png

Después de eso, seleccionando un Período en la segmentación de datos, solo las Acciones creadas y cerradas dentro del período se mostrarán en dos tablas.

P.D. Estoy seguro de que debería haber una manera de resolverlo usando relaciones inactivas sin crear una tabla de fechas y acciones adicional.

Estoy seguro de ello, porque si se establece una relación activa entre Actions[Created On] y Calendar[Date] (consulte Modelo de datos en la primera publicación), la tabla Actions de una página de informe se filtra a solo Created actions for the selected Period.

Y se puede filtrar para mostrar solo las acciones cerradas si cambia la relación activa a Acciones[Cerrado encendido] y Calendario[Fecha]

Desgraciadamente, no hay manera de mantener ambas relaciones como activas ...

Le daré kudo y estableceré "Aceptar como solución" si alguien propone cómo hacerlo a través de relaciones inactivas.

amitchandak
Super User
Super User

@Hennadii , su enfoque parece correcto, el período está llegando a través de la fecha por lo que debería funcionar.

Consulte mi ejemplo de usorelación se ha utilizado con dos fechas

https://community.powerbi.com/t5/Community-Blog/HR-Analytics-Active-Employee-Hire-and-Termination-tr...

@amitchandak , evaluó los números en la función CALCULATE, pero me gustaría devolver columnas o tablas. No creo que deba escribir alguna comparación sobre las fechas, ya que debería provenir de las relaciones. ¿Qué se debe escribir en la función Expresión de CALCULATE?

@Hennadii, ¿Puede compartir datos de ejemplo y salida de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.

Lo siento @amitchandak y @parry2k por confundir. He actualizado mi post con ejemplos y resultados esperados, así que espero que el problema que enfrenté sea más claro.

Mirando hacia adelante para sus consejos.

@Hennadii supongamos que está contando filas de acciones para creó y cerrado, tendrá dos medidas como esta

Create On Count = 
CALCULATE ( COUNTROWS( TableAction ), USERELATIONS( TableAction[CreatedOn], Calendar[Date] ) )

Create On Count = 
CALCULATE ( COUNTROWS( TableAction ), USERELATIONS( TableAction[ClosedOn], Calendar[Date] ) )

si no funciona, proporcione más contexto a su problema con los datos de muestra y comparta lo que está tratando de lograr,

Me gustaría elogiossi mi solución me ayudó.👉Si puedes pasar tiempo publicando la pregunta, también puedes hacer esfuerzos para darle a Kudos quien haya ayudado a resolver tu problema. ¡Es una muestra de agradecimiento!



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

@parry2k , sí, las medidas que proporcionó trabajo, pero cuentan el número de acciones, pero quiero ver estas acciones como una lista (columna con valores), no sólo un número total para el período seleccionado.

@Hennadii cuál es su salida esperada? no está claro. Lea este post para obtener su respuesta rápidamente.

https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

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