Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
alexis_garcia
Creator II
Creator II

Mostrar ausencia de datos

Hola,

voy a explicar un problema que me persigue desde hace tiempo que creí haber solucionado pero no.

A ver si alguien sabe cómo resolverlo.

Tengo FechaYhora cada 5 minutos y un dato por cada una.( Tabla Excel )

El problema es que a veces no existe FechaYhora, con lo que tampoco hay dato.

curvaDatos.JPG

Se pueden ver los datos que faltan entre los días 3 y 8 y los días 14 y 25, necesito que se muestre un 0 en cada dato asociado a una fecha que no existe. ( Que se vea la curva como baja a 0 y vuelve a subir cuando es mayor )

He intentado crear un calendario maestro y asociarlo a FechaYhora pero sigue sin mostrar los datos cuando no existe la FechaYhora.

También he marcado la opción "Mostrar Todos los Valores" y sí que se muestran los ceros en la gráfica pero no reacciona a los filtros de fecha que tengo, es decir, que muestra todas las fechas.

Ya no sé por donde tirar.

Alguna idea?

Gracias.

Un saludo.

17 Replies
jolivares
Specialist
Specialist

Ya he tenido una situacion similar, el tema es que para que QV sepa que no hay datos, debes dejarlo saber, es decir, en esta fecha y hora no hay datos.

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola chicos ....

No funciona porque al generar un calendario calendario con todas las fechas horas y minutos al marcar 'Mostrar todos los valores' en la dimensión omite los valores seleccionados sobre el campo la dimensión

Por otra parte si se generan datos con valor 0 ... se han de generar sobre todas las combinaciones de valores seleccionables para que funcione independientemente de la selección realizada.

Saludos

Joaquín

m_martinez
Partner - Contributor III
Partner - Contributor III

He creado un calendario para cada 15 minutos y creo que es lo que buscas.

m_martinez
Partner - Contributor III
Partner - Contributor III

Si deseas poder seleccionar por la fecha sin intervalos, deja el trozo del calendario de este modo:

2015-09-15_16-04-06.png

y selecciona por el campo FechaSelec.

alexis_garcia
Creator II
Creator II
Author

Hola Miguel, según tu ejemplo funciona, pero lo intento aplicar a mi modelo y me da error de expresión en la recarga.

Captura.JPG

Yo leo desde la base de datos:

DATOS:

LOAD *,

  date(num + hora, 'dd/MM/yyyy h:mm:ss') as Fecha;

LOAD

  FECHADatos,

     Date(FECHADatos)&' - '&Time(FECHADatos) as IntervaloOrac,

     Year(FECHADatos) as AÑOOrac,

     Month(FECHADatos) as NomMesOrac,

     Day(FECHADatos) as DiaOrac,

     Hour(FECHADatos) as HoraOrac,

     Minute(FECHADatos) as MinutosOrac,

     num(left((Date(FECHADatos)&' - '&Time(FECHADatos)),10)) as num,

  num(Trim(Right(Date(FECHADatos)&' - '&Time(FECHADatos), len(Date(FECHADatos)&' - '&Time(FECHADatos)) -  Index(Date(FECHADatos)&' - '&Time(FECHADatos),'-')))) as hora

FROM

[..\..\QVD\DATOS.qvd]

(qvd)

WHERE Month(FECHADatos)='ago' and Year(FECHADatos)='2014';

let mindate = num(Peek('Fecha', 0, 'DATOS'));

LET maxdate = num(Peek('Fecha', -1, 'DATOS'));

set tramo = num(Interval#('0:15:00'));

Calendar:

LOAD Date($(mindate) + Tramos) as Fecha,

  Tramos,

  FechaText,

  DateID;

LOAD

    Date(($(mindate) + num($(tramo))*IterNo()), '$(DateFormat)') as FechaText,

    IterNo() as DateID,

    num($(tramo))*IterNo() as Tramos

AUTOGENERATE 1

WHILE num($(mindate))+ num($(tramo))*IterNo()<= num($(maxdate))

;

LET mindate =;

LET maxdate =;

FECHADatos es la fecha y hora en formato numérico y la transformo a FechaYhora uniéndolas.

¿Cual es el problema?

Gracias.

Un saludo.

m_martinez
Partner - Contributor III
Partner - Contributor III

Sí, me ha pasado a mi también en función de como vienen los datos.

Parece que se lía un poco con los paréntesis en las variables.

Prueba a quitar el num() de la variable tramo

En lugar de

     set tramo = num(Interval#('0:15:00'));

pon

     set tramo = Interval#('0:15:00');

de este modo evitamos el num(num( que aparece en el error.

alexis_garcia
Creator II
Creator II
Author

Sigue sin funcionarme!

He conseguido que recargue añadiendo floor() y ceil() pero al representar la misma gráfica que has puesto tu no muestra los valores cuando no hay fecha, sigue igual que antes.

let mindate = floor(num(Peek('FECHADatos', 0, 'DATOS')));

LET maxdate = ceil(num(Peek('FECHADatos', -1, 'DATOS')));

Ya no entiendo qué puedo estar haciendo mal.

No se qué se me está escapando.

Gracias.

Un saludo.

m_martinez
Partner - Contributor III
Partner - Contributor III

Si te parece bien y puedes, cuelga la aplicación para que pueda echar un ojo.