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

The Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.

Reply
Syndicate_Admin
Administrator
Administrator

Período de fecha dinámico Filtro basado en la selección de segmentación de datos

Queridos todos,

Tengo 3 tablas de matriz separadas que me gustaría mostrar diferentes períodos de fecha basados en una sola selección de segmentación de datos.

Seguí la guía de Alberto a continuación para crear las medidas, tener mis relaciones y tablas de fechas configuradas exactamente de la misma manera, pero cuando intento aplicar el filtro visual específico, filtra a todas las fechas disponibles en mi tabla de calendario en lugar del período de fecha requerido.

https://www.youtube.com/watch?v=d8Rm7dwM6gc

Esta es la medida que se utiliza como un grupo de cálculo y luego actúa como un filtro de nivel visual:

VAR NumOfMonths = -6
VAR ReferenceDate = MAX ( 'Fecha'[Fecha] )
VAR PreviousDates = DATESINPERIOD ( 'Previous Date'[Date], ReferenceDate, NumOfMonths, MONTH )
Resultado VAR =
CALCULAR (
SELECTEDMEASURE (),
REMOVEFILTERS ( 'Fecha' ),
KEEPFILTERS ( PreviousDates ),
USERELATIONSHIP ( 'Fecha anterior' [Fecha], 'Fecha' [Fecha] )
)
Resultado de RETURN

¿Podría ser la razón por la que no funciona en mi caso porque tengo una combinación de medidas y agregaciones en mi tabla?

Cualquier sugerencia o ayuda es más que bienvenida

Gracias

Tom

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

, @badger_larry

De acuerdo con su descripción, desea "Filtro de período de fecha dinámico basado en la selección de segmentación de datos" y reviso su dax, creo que desea mostrar los datos de los últimos n meses en su visual. ¿Derecha?

Estos son los pasos que puede consultar:
(1) Estos son mis datos de prueba:

vyueyunzhmsft_0-1670210388078.png

Creo una tabla de fechas como esta:

vyueyunzhmsft_2-1670210474333.png

(2) Podemos crear un parámetro "what-if" como una segmentación de datos:

vyueyunzhmsft_1-1670210440221.png

(3) Entonces podemos crear una medida:

Measure = var _slicer = [Parameter Value]
var _curdate = MAX('Calendar'[Date])
var _max_date = MAXX( ALLSELECTED('Table') , [Date])
var _min_date = EOMONTH( _max_date , -_slicer)+1
 return
 IF(_slicer=BLANK(),1,  IF(_curdate>= _min_date && _curdate<=_max_date ,1 ,0))

(4) Luego podemos poner la medida en el "Filtro en este visual" y podemos satisfacer su necesidad:

vyueyunzhmsft_4-1670210511811.png

Gracias por su tiempo y uso compartido, y gracias por su apoyo y comprensión de PowerBI.

Saludos

Aniya Zhang

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

En ella @v-yueyunzh-msft ,

Muchas gracias por lo anterior, la única modificación que necesitaría hacer al código sería usar una segmentación de datos y no un valor numérico. ¿Cómo lo harías?

A continuación se muestra un ejemplo de mi panel de control: lo siento, tuve que bloquear la mayoría de las partes, pero espero que aún tenga sentido

forum-example.png

Muchas gracias

Tom

Syndicate_Admin
Administrator
Administrator

@badger_larry , La forma en que lo hago es crear una segmentación de datos en una tabla de fechas independiente y crear medidas como

mostrar los últimos 12 meses

Date1 es independiente Tabla de fechas, Fecha se une con Tabla
nueva medida =
var _max = maxx(allselected(Date1),Date1[Date])
var _min = eomes(_max, -12) +1
devolución
calculate( sum(Table[Value]), filter('Date', 'Date'[Date] >=_min && 'Date'[Date] <=_max))

Necesidad de una tabla de fechas independiente:https://www.youtube.com/watch?v=44fGGmg9fHI

Hola @amitchandak
Gracias por lo anterior, me temo que no resolvería mi problema porque [Valor] en la siguiente declaración todavía se referiría a una columna o una medida específica, sin embargo, en mi tabla de matriz tengo ~ 15 columnas + aproximadamente 5 medidas, por lo tanto, la función solo podría aplicarse a una. ¿Qué podía hacer?


@amitchandak escribió:

nueva medida =
var _max = maxx(allselected(Date1),Date1[Date])
var _min = eomes(_max, -12) +1
devolución
calculate( sum(Table[Value]), filter('Date', 'Date'[Date] >=_min && 'Date'[Date] <=_max))


Gracias

Helpful resources

Announcements
Feb2025 Sticker Challenge

Join our Community Sticker Challenge 2025

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Solution Authors