martes, 6 de octubre de 2009

Archivos QVD, Recarga incremental

Hacía tiempo que quería publicar algo sobre las recargas incrementales y por falta de tiempo nunca lo puse, como por la red hay bastante información sobre como realizarlas y ejecutarlas no voy a desarrollar mucho de ello, pero si de los pros y contras de usar ficheros QVD personalizados frente a los buffers.

Ficheros QVD personalizados

Ventajas
-Puedes tratar la información que proviene de la consulta a la BD antes de guardarla.
-Se pueden usar los ficheros para multiples archivos de QV, por lo tanto para tablas muy generales como empresas o departamentos puedes ir creando un repositorio centralizado, asi cuando se edita el fichero QVD solo se edita una vez.

Contras
-Su recarga es mas lenta, ya que se suele hacer la actualización del mismo en la propia recarga

Ficheros en Buffers

Ventajas
-Mayor rapidez de lectura frente a los QVD personalizados
-Son incrementales de forma autonoma

Contras
-Se alojan en local, en un directorio Windows, con una cabecera hexadecimal, por lo tanto no podemos usar la posibilidad de crear un repositorio unico
-Obviamente para cada fichero QV, crea un qvd en el directorio, con lo que el consumo de espacio aumenta

Personalmente, el metodo que sigo es el de tener mis propios ficheros, como dije anteriormente estoy poco a poco creando un repositorio muy util, los qvd se recargan a través de una tarea programada en el servidor y el resto de archivos qvd solo tienen que leerlos a posteriori con todo lo nuevo.

Un pequeño ejemplo de como funciono con ellos...

lunes, 28 de septiembre de 2009

Formulas Set Analysis

Ultimamente he estado probando la tan buena herramienta del set analysis a unos niveles algo más profundos de lo que lo había estado usando.
En una formula sencilla he observado que según la forma en la que diseñemos la misma podremos mejorar el tiempo de refresco de los cuadros si seguimos un pequeño consejo. Cuando se hacen exclusiones de valor, es mas rápido excluir el mismo que seleccionar todos menos el registro en si.
Parece algo lógico, pero prefiero escribirlo por aquí, de todos modos viene en el manual de ayuda de los análisis de conjuntos. Un ejemplo vale más que mil palabras.

1-Versión errónea, seleccionamos todos los valores menos los que son '000000000', de esta forma si los valores excluidos son una gran cantidad consumimos mucho tiempo en la CPU.
(Sum ({$ //IdGrupo_Gasto={"2*","31","70"},IdEmpresa={"*"}-{4,5,12}, CentroCoste={"*"}-{"000000000"}//} Gasto_Delegacion + Gastos_Directos + Gasto_Grupo + Gasto_Empresa))

2-Version correcta, excluimos de la seleccion solo los valores que no necesitamos
(Sum ({$ //IdGrupo_Gasto={"2*","31","70"},IdEmpresa={"*"}-{4,5,12}, ~CentroCoste={"000000000"}//} Gasto_Delegacion + Gastos_Directos + Gasto_Grupo + Gasto_Empresa))

Nota: He sustituido los caracteres "<>" por // porque sino el editor se los comía

lunes, 24 de agosto de 2009

NetWorkDays

Me tomo la licencia de enlazar esta entrada en la que Sertaz hace una muy buena apreciación de la funcion

He tenido ultimamente que implantarla en una serie de expresiones y me he encontrado con el problema siguiente a modo de ejemplo:
Durante el mes de Enero realizo 3 alquileres de maquinaria los dias 12, 24 y 26. Calculo para esto la siguiente funcion->networkdays(min(Fecha),max(fecha)) mas o menos asi y el resultado son los dias laborables desde el 12 al 26 que por supuesto no es correcto.
La solución que he encontrado a esto es cargar una tabla con la primera y ultima fecha de cada mes usando un calendario, en lo que queda algo asi y asociado al campo fecha.

Fechas:
LOAD
Fecha,
Month(Fecha),
Primer_Dia_Mes,
Ultimo_Dia_Mes,
Year(Fecha);
SQL SELECT Fecha,CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(Fecha)-1),Fecha),103) AS Primer_Dia_Mes, CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,Fecha))),DATEADD(mm,1,Fecha)),103) as Ultimo_Dia_Mes
FROM GBCC_Calendario_Ocupacion_Carga

Para cargar el primer dia y el ultimo del mes, me he fabricado esta consulta...
SELECT Fecha,CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(Fecha)-1),Fecha),103) AS Primer_Dia_Mes,
CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,Fecha))),DATEADD(mm,1,Fecha)),103) as Ultimo_Dia_Mes
FROM GBCC_Calendario_Ocupacion_Carga



El resultado final para que os hagais una idea de lo que queria obtener...



jueves, 23 de julio de 2009

Arranque dual XP y Vista

Hace unos días me encontré con el problema de tener un equipo con Vista que no quería perder el SO y además necesitaba el xp para tener compatibilidad con ciertos componentes externos.
Os recomiendo este enlace que me sirvió de mucha ayuda, aunque luego tuviese que hacer algunos cambios mas a mano.

miércoles, 8 de julio de 2009

Añadir cabeceras dinamicas a tablas.

Estos dias me he dedicado a poner un poco mas vistosos los diferentes cuadros de mando que tengo hechos (algun dia pondre capturas de ello), uno de los detallitos que he realizado es colocar en las tablas mas relevantes un contador que me indique segun la seleccion los elementos que tengo activos.

Un ejemplo a continuacion....
Disponemos de varias empresas y queremos observar dentro de cada una de ellas el total de efectos que nos deben. Dentro de las propiedades del grafico elegimos para el titulo que sea una expresion y la colocamos de esta forma:



Con lo que el resultado es este....

lunes, 6 de julio de 2009

Historias de Lusers.....

No suelo escribir de mis aventuras y desventuras con los lusers... pero tengo que decir que lo de hoy me sobrepasa...
Suena el telefono...
-Informatica diga?
-Hola soy la rubia torpona, es que tengo un problema, que cuando voy a imprimir la facturación no me imprime las rayas de las facturas encuadradas....
-Hola Rubia torpona, has puesto el papel preimpreso o estas imprimiendo en folios en blanco?
-Uyyyy, pero que tonta soy!!! como no me he dado cuenta!

No tengo que decir mas verdad???

viernes, 19 de junio de 2009

Como ejecutar procedimientos almacenados desde QlikView

El caso es sencillo, necesitamos ejecutar en la BD un store que recarga una tabla muy muy pesada de unos movimientos contables, como lo hacemos?



Recogemos los valores en dos variables y obtenemos su valor evaluado antes de asignar con el Let.
A continuacion escribimos la consulta normalmente pero sustituimos el "select..." por el Execute, donde los parametros son las variables que habiamos capturado anteriormente...
Esto me resulta bastante practico siempre y cuando tengamos que hacer calculos pesados ya que todo esto se realiza en la BD y el qlikview solo tiene que leerlo pero no calcularlo.

miércoles, 3 de junio de 2009

Certificaciones de Microsoft

Ultimamente no ando muy sobrado de tiempo que digamos, estoy liado con las certificaciones de Microsoft que la verdad no me dejan mucho tiempo libre.

Pego abajo unos enlaces para quien los quiera utilizar de guia...

Test de Conocimientos:

http://www.microsoft.com/spain/formacion/assessment/default.mspx

Información completa de que se compone cada curso

http://www.microsoft.com/spain/formacion/mcp/mcpd.mspx

Información Completa de lo que quiero llega a ser

http://www.microsoft.com/learning/mcp/mcts/default.mspx

1º Certificación que voy a obtener Microsoft .NET Framework 2.0–Application Development Foundation

http://www.microsoft.com/learning/en/us/exams/70-536.aspx

Microsoft .NET Framework 2.0 – Windows-Based Client Development

http://www.microsoft.com/learning/en/us/exams/70-526.mspx

Microsoft .NET Framework 2.0 – Web-Based Client Development

http://www.microsoft.com/learning/en/us/exams/70-528.mspx


Ni que decir tiene que si alguno está interesado en recibir algun tipo de información que no dude en comentarmelo

martes, 17 de marzo de 2009

Charla conferencia sobre virtualizacion

Ayer por la tarde tuve el honor de asistir a una conferencia enmarcada dentro de un ciclo en la UCO sobre virtualizacion impartida por Josep Ros

Se trataron varios temas interesantes que me asaltaban:
Hipevisores de tipo 1 y tipo 2
ESX
VMotion-Distribucion de la carga de trabajo
P2V VMWare Converter
SnapShots
Y algunas cosillas mas que tengo apuntadas pero no a mano y no voy a caer en el error de poner siglas sin saber bien a que ser refieren.

Aunque bien es cierto que me quede con ganas de mas xDDD, si completamos la implantacion de todo lo que nos traemos entre manos (ERP, CRM, Analitica...) tendriamos que pensar muy seriamente en esto, ya que habia leido mucho pero visto en practica poco.
La abstraccion de lo fisico a lo virtual parece a simple vista mas facil de lo que pensaba si bien el concepto de los switchs virtuales y el dimensionamiento de los servidores me intrigan bastante asi que tendre que ponerme manos a la obra a leer sobre ello...

Muchas gracias Josep por tu tiempo y tus explicaciones!!! Espero verte pronto por Córdoba!!!

jueves, 15 de enero de 2009

Gestion de permisos de usuarios en QlikView

Este articulo va enfocado a la gestion de permisos, principalmente por dos razones:
1-Evitar duplicar ficheros *.qwv para cada usuario con las pestañas concretas de cada uno, así evitamos hacer cambios en unos y otros si realizamos cambios.
2-Cerrar la información al usuario tan solo de lo que puede o debe ver, en un mismo fichero de QV se pueden agrupar las ventas y las compras pero un administrativo que facture no es necesario que vea el material que compra el responsable de este departamento, a la vez casi por inercia se consigue también unificar todo en un unico archivo como en el punto uno.

Hay varias formas de ocultar pestañas que he probado, bien por usuario o bien por usuario del dominio, dado el caso en el que me encuentro el filtro lo hago por usuario del dominio, ya que los ficheros no van a salir del lugar empresarial y si salen no se va a ver nada con lo cual tambien gano en seguridad.

1-Creamos una variable que contenga el user, bien del sistema o del dominio


2-Aplicamos el filtro en cada una de las pestañas que corresponda o bien podemos crear otra variable que asigne grupos de usuarios, tal y como en la imagen solo tenemos que seleccionar la pestaña condicional y añadir nuestra variable.


Como dicén por ahí facil rapido y sencillo, siempre y cuando tengamos claro los grupos de usuario que tienen accesos y se debe tener en cuenta que siempre tiene que haber un usuario que tenga acceso a todo(Admin) para siempre poder realizar cualquier cambio

martes, 13 de enero de 2009

Filtros y organizacion del sistema....

Antes de nada pido perdon por dejar abandonado el blog ultimamente demasiado, aunque bien es cierto que leo varios de la comunidad blogger que me quitan bastante tiempo porque no paran de poner buenos articulos!!
Durante la semana despues de reyes y lo que va de esta me estoy dedicando a filtrar y clasificar varios de los ficheros *.qwv que tenía esparcidos por el servidor.
1-Organización en carpetas separadas y bien clasificadas, si hace un tiempo cuando estaba empezando con todo esto empece en los nombres de ficheros a poner 4 letras que indentifican las vistas que le corresponden en SQL, porque no usar esto para una subdivision en carpetas????
Ejemplo: Fichero->GBCC_Analitica.qwv, vistas que le corresponden->GBCC_Pedidos_Cli_Lin, GBCC_Clientes_Datos....
2-Creacion de ficheros logs de cada uno de los ficheros asi tengo controlodo si las recargas automáticas se están haciendo bien, es sencillo solo es marcar la opcion como está en la imagen.


3-Tuve algun problemilla al automatizar las recargas por culpa de las macros que tengo para ejecutar,
editando las propiedades de usuario es posible resolver este problema, pero como no tengo la imagen subida al picasa ni estoy en el curro pues va a ser que no puedo mostrarla pero vamos que rebuscando sale.

4-Estoy automatizando tambien el backup, porque el resto del sistema es funcional y estoy valorando si merece la pena colocar todo en la copia o hacer que se haga mediante un batch a otro fichero...

En el próximo hilo trataré como hacer que un usuario del dominio vea unas pestañas o no.....