cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
cnschulz
Helper IV
Helper IV

Seleccione el rango de datos en función de los datos seleccionados

Gday,

Tengo un conjunto de actividades que son realizadas por los usuarios. Esentially, he USER_ID, ACTIVITY_ID, DATETIME. Lo que me gusta hacer es cuando un usuario de informe hace clic en un registro de actividad en un filtro, mostrar todas las actividades que se registraron dentro de un período de tiempo establecido de la actividad seleccionada. Por ejemplo (+- 1 hora) desde el tiempo de registro seleccionado. ¿Alguien sabe cómo crear algo así?

Salud

9 REPLIES 9
nandukrishnavs
Community Champion
Community Champion

@cnschulz

Tienes que escribir una medida para filtrar otro objeto visual.

Table.JPG

Deriva otra mesa. No hagas ninguna relación con esta mesa.

ActivityTable = SUMMARIZECOLUMNS('Table'[ACTIVITY_ID])

Utilice esta tabla en la segmentación

Cree una medida para filtrar la medida.

FilterMeasure =
VAR _activityID =
    CALCULATE (
        SELECTEDVALUE ( ActivityTable[ACTIVITY_ID] )
    )
VAR _selectedDatetime =
    CALCULATE (
        SELECTEDVALUE ( 'Table'[DATETIME] ),
        FILTER (
            ALL ( 'Table' ),
            'Table'[ACTIVITY_ID] = _activityID
        )
    )
VAR _minTime =
    _selectedDatetime
        - TIME ( 1, 0, 0 )
VAR _maxTime =
    _selectedDatetime
        + TIME ( 1, 0, 0 )
VAR _datetimeinrow =
    CALCULATE (
        SELECTEDVALUE ( 'Table'[DATETIME] )
    )
VAR _result =
    IF (
        _datetimeinrow >= _minTime
            && _datetimeinrow <= _maxTime,
        "Show",
        "Hide"
    )
RETURN
    _result

Capture.JPG

Ahora puede aplicar el filtro de nivel visual

Capture.JPG



¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Apreciar con un kudos
🙂

@nandukrishnavs Muchas gracias por la solución detallada. Funciona perfectamente. 🙂

Encontré un error con esto al otro lado de los límites de la fecha. ¡Bucle DATE y TIME si supera el valor unitario! Así que si uso - TIEMPO(48, 0, 0) se mantendrá el día el mismo! También no va a funcionar decir, si resta 1 hora de 01/01/01 00:00:45 itw iii dejar el día el mismo!!!

Así que para arreglar esto utilicé una simple resta de enteros:

VAR _mydatetime - _olddatetime - 1/24

Esto subaplicará una hora y prederve los límites de fecha.

Gracias a todos por su ayuda.

@nandukrishnavs Im sentimos molestarle de nuevo, Me han pedido una extensión a este, pero a solo no puedo llegar a trabajar 😞

Nos gustaría la capacidad de seleccionar acciones *múltiples* en una lista y luego mostrar *todas* acciones que se encuentran dentro del búfer de tiempo de cualquiera de las acciones seleccionadas. Es decir: muchos a muchos en lugar de uno a varios. Por lo tanto, el elemento seleccionado tendría que ser una tabla, no un identificador individual.

¿Alguien tiene un examen similar que puede demostrar?

Gracias de nuevo

@cnschulz

Prueba esto

FilterMeasure = 
VAR _activityID =

        DISTINCT ( ActivityTable[ACTIVITY_ID] )
    
VAR _minTime = MINX(FILTER(ALL('Table'),'Table'[ACTIVITY_ID] IN _activityID),'Table'[DATETIME]) - ( 1 / 24 )
VAR _maxTime =
    MAXX(FILTER(ALL('Table'),'Table'[ACTIVITY_ID] IN _activityID),'Table'[DATETIME]) + ( 1 / 24 )
VAR _datetimeinrow =
    CALCULATE (
        SELECTEDVALUE ( 'Table'[DATETIME] )
    )
VAR _result =
    IF (
        _datetimeinrow >= _minTime
            && _datetimeinrow <= _maxTime,
        "Show",
        "Hide" 
    )
RETURN
    _result

Capture.JPG



¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Apreciar con un kudos
🙂

Lo siento, me olvidé de hacer un seguimiento de esto. Funciona perfectamente 🙂

@cnschulz

Si el usuario no selecciona ningún filtro, desea ver todos los datos, puede controlarlos en la instrucción return.

Si su escenario es diferente, envíe como una nueva consulta junto con algunos datos válidos y la salida esperada en un formulario tabular.

amitchandak
Super User
Super User

@cnschulz , algo como esto

medidas de medidas
var _maxX á maxx(allselected(Table), Table[Datetime])
var _max á _maxX + tiempo(1,0,0)
var _min á _maxX - tiempo(1,0,0)
devolución
CALCULATE(Count(Table[value]), filter(All(Table), Table[Datetime]>-_min && Table[Datetime]<-_max))

Did I answer your question? Mark my post as a solution! Appreciate your Kudos!! !!
Dashboard of My Blogs !! Connect on Linkedin
Want To Learn Power BI
Learn Power BI Beginners !! Advance Power BI Concepts !! Power BI For Tableau User !! Learn Power BI in Hindi !!
Proud to be a Super User!

@amitchandak aplausos, esto está cerca.

Esto devuelve el *count* de todas las coincidencias, sin embargo, necesito identificar las filas coincidentes, ya sea filtrando mágicamente o estableciendo una medida binaria: 1-match 0-no match

tenemos esto:

Necesito algo como esto:

Annotation 2020-05-15 121322-2.png

Voy a tratar de la (más complicada) sugerencia a continuación y ver ho wtha va.

Helpful resources

Announcements
Power BI December 2021 Update_carousel 768x460.jpg

Check it Out!

Click here to read more about the December 2021 Updates!

User Group Leader Meeting January 768x460.png

Calling all User Group Leaders!

Don't miss the User Group Leader meetings on January, 24th & 25th, 2022.

Jan 2022 Dev Camp 768x460 copy.png

Power BI Dev Camp- January 27th, 2022

Mark your calendars and join us for our next Power BI Dev Camp!