Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
ecardenalarias
Contributor
Contributor

Obtener todos los últimos datos grabados de todos los días en tabla

Buenos días,

Tenemos una base de datos que se va alimentando grabando cada minuto datos de un plc de una máquina.

Esa tabla de la bd la puedo cargar sin problemas en una tabla en Qlik Sense.

Mi pregunta es, si es posible en una tabla, que solo muestre la última fila grabada cada uno de los días.

Entiendo que en la columna fecha que introduzco, tendría que crear una "Medida" en "Elementos maestros" y ahí definir esa media que obtenga la última fecha de cada día.

Un saludo y gracias.

5 Replies
ecardenalarias
Contributor
Contributor
Author

Para que se entienda mejor la pregunta, tengo una tabla que me refleja estos datos (es una parte de los datos)

  

FECHAM3 DEPÓSITO 1M3 DEPÓSITO 2TOTAL  M3 1+2
12/04/2018 13:330,00,00,0
12/04/2018 13:330,00,00,0
12/04/2018 13:330,00,00,0
12/04/2018 13:340,00,00,0
12/04/2018 13:390,00,00,0
12/04/2018 13:440,00,00,0
12/04/2018 13:490,00,00,0
12/04/2018 13:540,00,00,0
12/04/2018 13:590,00,00,0
12/04/2018 14:040,00,00,0
12/04/2018 14:090,00,00,0
12/04/2018 14:140,00,00,0
12/04/2018 14:190,00,00,0
12/04/2018 14:240,00,00,0
12/04/2018 14:290,00,00,0
12/04/2018 14:340,00,00,0
12/04/2018 14:390,00,00,0
12/04/2018 14:440,00,00,0
12/04/2018 14:490,00,00,0
12/04/2018 14:540,00,00,0
12/04/2018 14:590,00,00,0
12/04/2018 15:040,00,00,0
12/04/2018 15:090,00,0

0,0

El problema es que yo lo que quiero es que me saque solo la última fila de cada día, es decir, algo así

  

FECHAM3 DEPÓSITO 1M3 DEPÓSITO 2TOTAL  M3 1+2
12/04/2018 23:330,00,00,0
11/04/2018 23:330,00,00,0
10/04/2018 23:330,00,00,0
09/04/2018 23:340,00,00,0
08/04/2018 23:390,00,00,0
07/04/2018 23:440,00,00,0
06/04/2018 23:490,00,00,0
rubenmarin

Hola Esteban, podrías hacer cargar en una tabla auxiliar la fecha más alta de cada día y hacer un Inner Join para quedarte solo con esos registros, para esto se podría crear al cargar la primera tabla un campo solo con la fecha (sin hora):

Floor(FECHA) as SoloFecha

Y agrupando con ese campo puedes obtener la hora más alta para cada fecha

Inner Join (NombreTablaDatos)

LOAD SoloFecha

     MAX(FECHA) as FECHA

Resident NombreTablaDatos

Group by SoloFecha

;

juliocodesal
Contributor III
Contributor III

Hola:

Necesitas asegurarte que en la carga de datos has creado una dimensión que contiene la Fecha-Hora en formato correcto y una que contiene la fecha por separado (sin la información de la hora). Con esto tu formula para la dimensión sería:

aggr(timestamp(max(FechaHora)), Fecha)

Estos son los datos que he utilizado:

602f4e47b6fa4fecb6a866b37c68fd2f.png

Esta la formula con el resultado:

8dfbf01189634c6fa7548d4ff51ea8f4.png

Activa no visualizar nulos.

ecardenalarias
Contributor
Contributor
Author

Hola Julio, creo que tu respuesta sería la que me podría ayudar, pero el problema es como defino esa dimensión que comentas.

En en la creación de las dimensiones del calendario que tengo, se queda así:

[Formato]:

DECLARE FIELD DEFINITION Tagged ('$date')

  FIELDS

  Dual(Year($1), YearStart($1)) AS [Año] Tagged ('$axis', '$year'),

  Month($1) AS [Mes] Tagged ('$month'),

  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [Año Mes] Tagged ('$axis', '$yearmonth'),

  Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Semana] Tagged ('$weeknumber'),

  Date(Floor($1)) AS [Fecha] Tagged ('$date');

DERIVE FIELDS FROM FIELDS [Tiempo_Depositos] USING [Formato] ;

Supongo que será sacando algo como esto

  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [Año Mes] Tagged ('$axis', '$yearmonth'),

pero con el día también.

Ahora, como meter el día también, no lo consigo.

juliocodesal
Contributor III
Contributor III

Ok, a ver si te sirvo de ayuda que yo estoy empezando.

La dimensión Fecha que tienes definida te debería de servir porque no está incluida la hora al haberle aplicado la función Floor.


Por otro lado entiendo que en [Tiempo_Depositos] estás cargando datos de tipo "06/04/2018 23:49" prueba a usar alguna función de fecha para ver si te está reconociendo ese campo como fecha  xej.   

timestamp#([Tiempo_Depositos]).


Si esto es correcto la formula de la dimensión sería:

aggr(timestamp(max(Tiempo_Depositos)), Fecha)