Soy el fundador de Dataprix, y doy la bienvenida a todos los visitantes del portal, y os animo a registraros y participar.

A nivel profesional soy Ingeniero Informático, con muchos años de experiencia en entornos de bases de datos y Business Intelligence, y bastantes kilómetros hechos ya con herramientas como Cognos, MicroStrategy, SQL Server Integration Services, PowerBI o Tableau.

Últimamente experimentando con Python.

e-mail de contacto
carlos.fernandez@dataprix.com

Member for

18 years 11 months

Publicaciones

  • Pruebas de rendimiento y optimización para hostings y sitios web

    Test de velocidad de carga después de activar PageSpeedEl rendimiento de una web es un factor muy importante, tanto para proporcionar una buena experiencia de navegación al visitante como para que el algoritmo de Google te tenga mejor considerado en sus resultados de búsqueda, así que merece la pena invertir un poco de esfuerzo y a veces de dinero en que tu web responda rápido a las interacciones con los visitantes y usuarios..

  • Cómo hice un cambio de hosting, de Dreamhost a Siteground

    Asignación de permisos en hosting SiteGround para usuario de MySQLLlevaba muchos años utilizando el hosting compartido de Dreamhost, y estaba contento con el servicio, ya que me han ofrecido un servicio muy estable, un panel de control fácil de utilizar, y tráfico y espacio ilimitado para todos mis dominios, pero siempre he tenido el problema de que mis visitas vienen de España, y los servidores de Dreamhost están en Estados Unidos, cosa que penaliza bastante el tiempo de carga.

    Esa ha sido la principal razón del cambio, tener los servidores más cerca de mis usuarios, y también disponer de una IP española para el SEO, eso y también la buena fama de Siteground en cuanto a velocidad y calidad del servicio, y una buena oferta que ofrecían en ese momento, que me hizo acabar de decidirme..

  • Cómo programar la ejecución de jobs y transformaciones de kettle / PDI CE

    Foros IT

    La versión Enterprise de Pentaho Data Integration incluye un scheduler con el que es muy fácil programar la ejecución de jobs de Kettle, pero si tienes la versión CE (Community Edition) no busques este scheduler porque es uno de los 'extras' que incluye la versión de pago de PDI.

    La buena noticia es que, aunque no sea tan intuitivo, con la versión CE es bastante fácil utilizar las aplicaciones kitchen o pan desde la linea de comandos para ejecutar jobs y transformaciones de Kettle, respectivamente.

    Después sólo hay que incluir el comando en un script ejecutable, y llamar al script desde un programador de tareas externo como el CRON de Linux, el Programador de tareas de Windows, desde otras ETL's, o desde gestores de jobs de bases de datos como PostgreSQL o SQLServer.

    Ejemplo de ejecución de jobs de Kettle desde linea de comandos

    Yo lo he hecho desde windows y he utilizado el Agente de SQL Server para crear un trabajo con una programación diaria que ejecuta un archivo .bat con el comando de kitchen que ejecuta un job de kettle, y este es el ejemplo de contenido del .bat:

  • Cómo conectar desde Visual Studio y SSIS con bases de datos Oracle

    Administrador de conexiones SSIS OLEDB a OracleConectar flujos de datos de Integration Services con bases de datos Oracle es muy sencillo, siempre que tengas bien configurado el driver de Oracle que te va a permitir esta conexión.

    Los drivers que vienen por defecto no suelen funcionar bien para conectar con Oracle, y lo más recomendable es instalar y utilizar los conectores que proporciona Oracle, el famoso cliente de Oracle, tanto para trabajar con SQL Server Integration Services, como para crear aplicaciones directamente con Visual Studio..

  • SQL Dinámico con retorno de valores en procedimientos de SQL Server

    Si necesitas parametrizar algo más que los valores de los campos que se introducen en la parte del WHERE en una sentencia T-SQL de un procedimiento almacenado seguramente vas a tener que utilizar SQL dinámico, aunque si se puede hacer lo mismo sin SQL dinámico siempre es mejor, más seguro y más eficiente.

    Ejemplo de sentencias que se pueden hacer dentro de un procedure con SQL 'Estático'

    INSERT INTO estadisticas(idFecha,fecha,bd,tabla,campo,filtro,funcion,valor) 
                values (@idfecha,getdate(),@bd,@tabla,@campo,'','COUNT',@valor)
    
    SELECT @valor= valor FROM estadisticas WHERE bd=@bd and tabla=@tabla and campo=@campo

    Ejemplos de sentencias que se pueden hacer dentro de un procedure con SQL dinámico

    Si es necesario parametrizar el nombre de la tabla de la query, o partes de la sentencia fuera del WHERE, se puede utilizar SQL dinamico con la opción poco recomendada porque el motor no puede optimizar nada, y porque se corre el peligro de sufrir un ataque de SQL Injection de montar la sentencia en un string, y ejecutarlo directamente con EXEC.

    Un ejemplo de lo que se puede hacer, pero es mejor evitar:

  • Cambio del proyecto de modo implementación de paquetes a implementación de proyectos

    Para cambiar el modo de implementación de paquetes a proyectos, y poder desplegar el proyecto en el catálogo IS de SQL Server se puede utilizar el asistente que se inicia fácilmente con un clic en el botón derecho sobre el proyecto, en el explorador de soluciones, y seleccionando la opción 'Convertir al modelo de implementación de proyectos'.

    Es todo muy intuitivo menos, al menos para mi, el paso de seleccionar las configuraciones que se han de convertir. En mi caso utilizaba configuraciones para alimentar variables con valores almacenados en la tabla SSIS Configurations de SQL Server, y los paquetes que utilizaban estas configuraciones me salían con un estado 'No se puedo conectar con el servidor', error de inicio de sesión..

    Este problema se soluciona con la opción 'Agregar configuraciones..', que permite volver a introducir los datos de conexión y 'leer' las configuraciones de la tabla SSIS Configurations. Se agrega una nueva configuración con el asistente para cada una de las que está en estado 'No se pudo conectar..' y después se seleccionan sólo las nuevas, que ya han de mostrar un estado 'Aceptar'.