Our Blogs
English
Español
Skip Navigation Links
News
Our Team
Mentoring
Miguel Egea
Go to home page
Go Search

 
Other Blogs
There are no items in this list.

Our Blogs > Español > Miguel Egea
Presentación en la I Microsoft Bussines Intelligence Conference en madrid
Buenas noches
 
Ya estoy de vuelta en casita, con un principio de gripe que he mitigado algo pegandole la mitad de los virus a mi compañero Antonio Soto e intentando cumplir con parte de la promesa que hice a los valientes que atendieron mi presentación en el día de hoy.
 
Espero que la presentación les gustase, yo desde luego disfruté dandola. Se me hizo algo corta, porque intenté contar en demasiado detalle alguna de las demos del principio, no quería dejar pasar ningún fundamento, pero bueno, solo me salté una demostración :)
 
Sobre las demos, tengo aún que ver como lo voy a resolver desde el punto de vista técnico, voy a consultar si podemos colgarlas como videos y si es así entre mi compañero Francisco Gonzalez y yo las grabaremos y las pondremos a disposición de todos (Por cierto muchas gracias Paco por ayudarme con las demos, no me habría dado tiempo tiempo a hacerlas si tí) y Gracias también a Rubén por que la que enseñe de Workload es de un post del blog del rincón del DBA que él mismo hizo
 
Bueno, sin más rollos, pinchad aquí para descargar la presentación.
 
Un abrazo
Miguel Egea
Presentación Analysis Services en Alicante

SQL Server 2005 Analisys Services

Salvador  Ramos y Miguel Egea



El útlimo viernes de Septiembre, en la reunión mensual de Gusenet tuve la oportunidad y el placer de compartir con Salvador Ramos la presentación de Analisys Services 2005, no solo lo conceptos básicos, que ya hemos tratado en otras ocasiones, sino también aplicaciones prácticas y a nivel de descripción algunas carácteristicas avanzadas. 

La verdad es que es un placer compartir tribuna con Salva, no solo por los conocimientos que tiene sobre la tecnología, sino también porque la explica con una cercanía y una paciencia absolutamente impresionante.

Para los que asististeis, pero también para los que no, aquí teneis el enlace de las diapositivas de la presentación.
 
Miguel Egea
Analisys Services Team, You got it!!
Dentro de las sesiones quisiera no solo hablar del mundo  techie, me gustaría también hablar de la interacción del grupo de producto.
 
Sin duda pertenecer a una gran compañia de grandes techies ayuda, cuando alguien del development team te ve con el polo de Solid Quality Mentors, inmediatamente tiene sus oidos abiertos. 
 
Durante la semana Alejandro Leguizamo y yo mismo estuvimos en un lab con dos miembros del equipo de desarrollo, Richard Tkachuk y Christian Petculescu y mostrandoles algunos asuntos de su interés para la mejora del producto. Simplemente increible, el asunto era de una complejidad bastante grande, así que Christian hizo suyo el asunto y en la madrugada de anoche nos había contestado. Lo que contestara es casi lo de menos, lo que mas me agradó del asunto es que no entraran en la burocracia de apertura de caso de soporte, etc, etc.  Con esto no quiero decir que tengamos "barra libre", si hay un asunto que ha de seguir los cauces ha de seguirlo, lo que quiero resaltar es la capacidad del equipo para ponerse en la piel del usuario, en este caso los techies que nos apasiona la tecnología  y buscar la mejor de las soluciones viables.
 
Si a esto le añadimos el feedback que estoy seguro han escuchado en la sesión privada con MVP's en la que hemos tenido el gusto de participar la única conclusión que se puede sacar es... Estamos ante un gran equipo, es capaz de fabricar buenas soluciones, está dispuesto a escuchar a la industria y sabe resolver problemas, con estas tres aptitudes solo se puede llegar a un sitio, ¡Al éxito!
 
 
Saludos en mis últimas horas en Denver por esta ocasión
 
Miguel Egea
 
P.D. Aquí teneis una foto de Alejandro  junto a Christian
 
Alejandro y Christian
Microsoft PerformancePoint 2007. Advanced Planing
Steve Hoberecht, Roberta York, ambos del equpo de desarrollo microsoft.
 
La sesión era una sesión de nivel 300, lo que quiere decir que entra en el detalle pero no en las interioridades.  ),.
 
Es un producto interesante que permite a  los usuarios crear sus cuadros de mando y pizarras de control basado en los atributos y dimensiones de sus cubos.
 
El producto es mucho más que una herramienta para pintar el negocio, es una herramienta de seguimiento de los objetivos de negocio en si misma. 
 
Sin entrar en las funcionalidades os diré que el producto basado en reglas de negocio escritas en un lenguaje PEL performance execution languaje y en workflows que actuarán sobre esos datos será capaz de mantener un seguimiento del negocio.
 
La demo del producto, estuvo dividida en dos partes, en la primera vimos la configuracón de servidor y como usar el Bussiness Planner Modeler para describir las reglas de negocio  e interacciones de los procesos con los objetivos de negocio. Ahí vimos también los tipos de dimensión predefinidos, los tipos de dimensión dan un sabor de negocio a las dimensiones, dejando aparte el mundo puramente techie para buscar ese punto de encuentro con el mundo de negocio. Vimos también Formularios y Reportes, además de la parte de administración del proceso.
 
Os adjunto también una foto de Steve y Roberta durante la sesión.
 
Steve y Roberta durante la sesión
 
Saludos
Miguel Egea
Microsoft SQL Server 2008 Analisys Services, What's New
¿que hay de nuevo viejo? No he podido evitarlo, me acordé de bug bunny y tenía que citarlo, creo que a los grandes hay que citarlos siempre, como hay que citar a Donald Farmer.
 
Donald Farmer en un momento de la presentación
Donald en un momento de la sesion
 
Donald Farmer es Senior Program Manager en el equipo de desarrollo de Microsoft SQL Server Analisys services y durante el día de hoy nos ha ofrecido un magistral ejemplo de como hay que dar una charla. Con seriedad, pero amena, un par de bromas en medio de la charla, muy suavecitas, de buen gusto y mucha carne en el asador. Siendo un Techie como soy, eso es lo que más me gustó de la sesión.
 
Vamos al tema ¿que hay de nuevo en Analisys Services 2008?
 
Primero Donald nos habló de cuales son las metas que se ha planteado el equipo de desarrollo para decidir los cambios, y estas son las metas que nos comentó :
 
Centrado en el "Customer Delight", encantando a los clientes
 
Mejoras funcionales
  • Escalabilidad
  • Rendimiento
  • Favoreciendo la fácil administración (Manageability)
  • Mejorando la experiencia con los datos
    • Mejoras en MDX
    • Mejoras en los datos y el control de resultados

Mejoras no funcionales

  • Sin sorpresas. Dejemos tiempo para que se aprenda bien SQL 2005 y 2008
  • Fácil transición. Que la migración desde 2005 sea transparente
Después de esto, Ronald nos estuvo hablando sobre el RoadMap de 2008, cuales son los objetivos que se van a lograr al llegar a 2008, para el Engine, se han centrado en el Rendimiento. Rendimiento, Rendimiento Rendimiento es una palabra que hemos oido mucho en esta charla.  Las herramientas nuevas están también "Diseñadas para rendir", cuando le oí hablar de esto, me acordé del SD3, aquí es Con Rendimiento por diseño, con Rendimiento por implementación  y con Rendimiento Por Defecto, puesto que una de las cosas que nos estuvo contando Ronald es que han intentado tomar nota de las lecciones aprendidas en los clientes y mientras se mantiene la facilidad para crear un Cubo de 2005 (un wizard y unos cuantos clicks)  se hace también que ese cubo esté rindiendo lo más posible desde el principio.
Además de esto los adjetivos que usó Ronald fueron:
Soportable, en dos vertientes, auto-soportado, puesto que hay muchas mejoras (como porejemplo planes de ejecución para consultas de AS) que van orientadas al auto soporte como al coporte del CSS (Customer Support Service) recolectando la información que es útil para el equipo del CSS para detectar y solucionar un prblema.
Extensible. No tomé muchas notas sobre esto, pero en este sentido por ejemplo la forma de crear acumulados manual ha sido añadida en esta versión, esto ayuda a esa extensibilidad de alguna forma.
Escalable y flexible. En este sentido las bases de datos multidimensionales en modo de solo lectura (MOLAP) ya podrán configurarse en Balanceo de Carga entrando a la batería de servers a través de una dirección IP Virtual.
 
Block computation. El block computation es un caso particular de acumulados en el caso en el que la mayor parte de los valores son nulos, igual parece poco común pero no lo es, por ejemplo si una de tus dimensiones tiene todos los paises y no hay ventas en todos los paises todos los dias, tu DW tendrá huecos, tendrá nulos, esta funcionalidad detecta ese hecho y simplemente rinde mejor evitando hacer cálculos sobre los nulos. Ronald comentaba que hasta un 500% más rápido (poned el 60 en cuarentena que no estoy seguro de haber entendido bien el número).
 
Analisys Services DMV's  Nice!!!, de la misma forma que en el relacional podemos consultar las funciones del sistema para saber que está pasando por el motor, en el engine multidemensional se va a poder consultar con un lenguaje similar a TSQL a través de funciones $system, estas funciones tienen información sobre la conexión, las sesiones, los comandos, los objetos usados por esos comandos y tanto la memoria como las actividades relacionadas con esos objetos que usan los comandos.
 
 
Escalabilidad de los backups.  Un gráfico demoledor mostrado por Donald sobre las diferencias en la escalabilidad de los backups. Al parecer los backups en 2005 se vuelven lentos con bases de datos que empiezan a ser grandes y ese incremento de consumo de recursos, al menos en el gráfico que yo vi, tiene un comportamiento exponencial, con las mejoras en 2008 han conseguido entre otras cosas que ese incremento no sea exponencial sino lineal, creo que no hace falta más explicaciones por lo tanto..
 
KPI's Sessions Estamos ante el establecimiento de sesiones que permieten añadir propiedades de miembros calculados a nivel de sesión.
 
Mejoras en el forecasting. El algoritmo que SQL Server 2005 usa para Forecasting es el ARTXP, este algoritmo nacido en los laboratorios de Microsoft Research es muy bueno prediciendo el siguiente paso, pero no lo es tanto en el medio y largo plazo. Aunque por supuesto seguirá siendo un referente para el Data Mining dentro de SQL Server Analisys Services 2008, también se ha añadido el algoritmo de forecasting más usado por la industria  el ARIMA  que además es más eficaz en las prediciones a futuro más lejano.
 
Nuevos mecanismos para dividir datos de entrenamiento y Test En el modelo de mineria de datos, algunos datos se usan para entrenar el modelo, otros para testear el modelo y sobre otro grupo es sobre el que se realizan predicciones, es el modelo clásido de la minería de datos. La mejora consiste en que fijar cuales son esos conjuntos de datos es una tarea más amigable en SQL Analisys Services 2008
SQM Charla: Excel 2007 BI capabities by Alejandro leguizamo
Primera sesión de PASS después del Keynote, ese que nos perdimos por los nervios de Alejandro (con la experiencia que tiene y lo bien que lo hace aún se pone nerviosíiisimo antes de empezar una charla) y por el desayuno, aunque alimentados (mal) os puedo asegurar que estamos... pero eso es otro tema que me diluyo...
 
Rushab y Alejandro impartieron esta sesión, básicamente Rushab hizo la introducción a la sesión y la agenda y Ale estuvo simplemente genial, como casi siempre.
 
Las mejoras que nos ha mostrado de Excel como cliente de Bussiness Inteligence son simplemente impresionantes.
 
Algunas de ellas son :
 
* Aspectos de celdas basadas en definiciones de servidor
* Capacidad para dibujar KPI's
* Capacidad para convertir tablas dinámicas en fórmulas que permitan fijar ciertos valores de forma absoluta en la hoja.
* Capacidad para escribir esas fórmulas directamente.
* La cadena de conexión ya no está oculta, ya no es necesario iterar por las hojas para ver a que cubo está conectada esta hoja
* Integración con formato condicional para análisis grafico.
* Cliente rico de DataMining, mecanismo de consultas  etc.
 
Aquí teneis una foto de los dos ponentes,
Alejandro y Rushabh
 
Seguriemos contando cosas :)
 
Saludos desde denver
 
 
Solid Quality Mentors en el 2007 Denver PASS
Después de un larguísimo viaje de casi 20 horas, con escala en Filadelfia incluida, llegamos Alejandro Leguizmo y yo mismo al Colorado Convention Center de Denver, en donde este año se está celebrando el PASS 2007.
 
PASS, por si no le suenan las siglas es el acrónimo de Professional Association of SQL Server y organiza esta conferencia en la que después del keynote hay 10 tracks simultaneos, 9 de ellos exclusivamente sobre SQL En todos sus sabores, Relacional, BI, Relación con SharePoint en fin, de todo.
 
Lo mejor de estos eventos es casi siempre el nivel de los ponentes, y en ese sentido me siento muy orgulloso de pertenecer a Solid Quality Mentors, un buen número de sesiones de todos los tracks tienen la firma de esta compañía.
 
Como anecdota os contaré que hace 2 noches estuvimos cenando Itzik Ben Gan y su esposa Lilatch, Fernando Guerrero, Lubor Kollar, Peter de Betta, Dejan Sarka, y un servidor (espero no olvidar a nadie :$), no os imaginais lo divertida que resultó, mientras hablamos de lo divino y lo humano, pero con este grupo de cracks no podía acabar la noche sino con uno de los "acertijos" de Itzik, es tremendo este hombre.... Os lo voy a proponer para que veáis vuestra solucion, en unos dias publicaré la de Itzik.
 
PROBLEMA: Tienes una balanza de estas que tienen dos brazos, en ella tienes que ser capaz de pesar cualquier peso entre 1 y 1000 kgs, ¿cual es el mínimo número de pesos que necesitas y cuales son esos pesos? Sé que es una frikada, pero... es lo que hay :)
 
Aquí os dejo una foto de cuatro de las mentes mas privilegiadas que tenemos la suerte de tener entre los amantes de SQL Server, Lubor, Dejan, Itzik y Fernando
 
4 tipos fenomenales
 
Saludos desde denver.
Miguel Egea
Relaciones jerárquicas en SQL 2005
Este query lo construimos dinámicamente en clase para intentar construir jerarquias que posteriormente un cubo fuese capaz de poner en niveles.
Yo creo que el código casi se explica solo, así que ahí va el query y luego su resultado

create table Empleados ( idEmpleado int identity (1,1) primary key,

NombreEmpleado varchar(100) ,

idJefe int,

constraint fk_jefeempleado foreign key (idjefe) references Empleados (idEmpleado))

go

insert into Empleados (NombreEmpleado,idjefe) values('Javier El jefe',null)

insert into Empleados (NombreEmpleado,idjefe) values('Miguel Empleado',1)

insert into Empleados (NombreEmpleado,idjefe) values('Pepe El jefe',null)

insert into Empleados (NombreEmpleado,idjefe) values('antonio Empleado',3)

insert into Empleados (NombreEmpleado,idjefe) values('luis Empleado',2)

go

with cte (idEmpleado,NombreEmpleado,Nombrejefe,idjefe, jerarquia) as

(

select IdEmpleado,NombreEmpleado,cast('JEFE' as varchar(100)) NombreJefe,idjefe ,

cast(cast (row_number() over( order by idEmpleado) as varchar(100))+'.'as varchar(100)) jerarquia

from empleados

where idjefe is null

union all

select e.IdEmpleado,e.NombreEmpleado, cte.NombreEmpleado,e.idJefe as NombreJefe ,

cast (jerarquia+cast (row_number() over( order by e.idEmpleado) as varchar(100))+'.' as varchar(100))

from empleados E inner join

cte on e.idJefe=cte.idEmpleado

where not e.idjefe is null

)

select * from cte order by jerarquia

 

El resultado de la ejecución es

id Nombre JEFE idjefe jerarquia
1 Javier El jefe JEFE NULL 1.
2 Miguel Empleado Javier El jefe 1 1.1.
5 luis Empleado Miguel Empleado 2 1.1.1.
3 Pepe El jefe JEFE NULL 2.
4 antonio Empleado Pepe El jefe 3 2.1.

Introdución a Service Broker, xml-schemas, mensajes,colas y demás familia
En el blog de formación hemos publicado la presentación (o estamos a punto de hacerlo) sin embargo el código lo voy a poner aquí :).
 
Los scripts tienen tres partes, en la primera configuramos toda la estructura, en la segunda enviamos un mensaje y en la tercera recibimos el mensaje y acabamos la conversación.
 
Espero que los que habéis visto la presentación la hayais disfrutado y que los que no la habéis visto os sirvan los scripts que hay a continuación.
 
Creando los esquemas
 

CREATE XML SCHEMA COLLECTION MiEsquemaEnvio AS

N'<schema xmlns="http://www.w3.org/2001/XMLSchema" >

        <element name="Clientes">

  <complexType>

   <sequence>

    <element name="idCliente" type="int" />

    <element name="Nombre" type="string"/>

   </sequence>

  </complexType>

 </element>

 </schema>

'

GO

CREATE XML SCHEMA COLLECTION MiEsquemaRecepcion AS

N'<schema xmlns="http://www.w3.org/2001/XMLSchema" >

          <element name="Clientes">

  <complexType>

   <sequence>

    <element name="idCliente" type="int" />

    <element name="CreditoConcedido" type="decimal"/>

   </sequence>

  </complexType>

 </element>

 </schema>

'

 

Creando Tipos de mensajes basados en esos esquemas

 

CREATE MESSAGE TYPE [Envio] VALIDATION= VALID_XML

             WITH SCHEMA COLLECTION MiEsquemaEnvio;

 

CREATE MESSAGE TYPE [Recepcion]

       VALIDATION=VALID_XML

             WITH SCHEMA COLLECTION MiEsquemaRecepcion;

GO

 

Creando contratos que permitan enviar y recibir mensajes de este tipo

 

CREATE CONTRACT [PeticionCredito]

       ([Envio] SENT BY  INITIATOR,[Recepcion] SENT BY TARGET)

 

Creando las colas para soportar estas cosas 

 

CREATE QUEUE Peticion  WITH STATUS=ON;

CREATE QUEUE Respuesta WITH STATUS=ON;

 

Creando servicios que usen estas colas

 

CREATE SERVICE SrvPeticion  ON

       QUEUE [Peticion]  ( PeticionCredito);

CREATE SERVICE SrvRespuesta ON

       QUEUE [Respuesta] ( PeticionCredito);

 

 

Enviando mensajes basados en esos servicios

 

DECLARE @Cliente xml(MiEsquemaEnvio)

 

DECLARE @message_type_name NVARCHAR(256)

 

DECLARE @conversationhandle UNIQUEIDENTIFIER

 

DECLARE @Conversacion TABLE(

     service_instance_id UNIQUEIDENTIFIER,

     handle UNIQUEIDENTIFIER,

     message_sequence_number BIGINT,

     service_name NVARCHAR(512),

     service_contract_name NVARCHAR(256),

     message_type_name NVARCHAR(256),

     validation NCHAR,

     message_body VARBINARY(MAX)) ;

 

Set @cliente=

CAST(N'<Clientes>

        <idCliente>10</idCliente>

        <Nombre>Miguel Egea (Petición 1)</Nombre>

       </Clientes>' as xml(MiEsquemaEnvio))

 

 

BEGIN TRANSACTION

       BEGIN DIALOG @conversationhandle

          FROM SERVICE SrvPeticion

          TO   SERVICE 'SrvRespuesta'

          ON  CONTRACT PeticionCredito

        WITH ENCRYPTION=OFF;

 

        SEND ON CONVERSATION @conversationhandle

             MESSAGE TYPE Envio (@cliente)

COMMIT

 

 

Una vez que hemos enviado el mensaje, veamos como recibirlo en el destino.

 

DECLARE @Cliente xml(MiEsquemaEnvio)

Declare @conversationhandle uniqueidentifier

declare @saldoCliente as xml(MiEsquemaRecepcion)

Declare @id int

    DECLARE @Conversacion TABLE(

     service_instance_id UNIQUEIDENTIFIER,

     handle UNIQUEIDENTIFIER,

     message_sequence_number BIGINT,

     service_name NVARCHAR(512),

     service_contract_name NVARCHAR(256),

     message_type_name NVARCHAR(256),

     validation NCHAR,

     message_body VARBINARY(MAX)) ;

 

 

       BEGIN TRANSACTION

             WAITFOR

                    (

                    RECEIVE TOP (1)

                           conversation_group_id,

                           conversation_handle,

                           message_sequence_number,

                           service_name,

                           service_contract_name,

                           message_type_name,

                           validation,

                           message_body

                    FROM Respuesta

                    INTO @Conversacion

                    );

 

               SELECT @conversationhandle=handle,

                            @cliente=message_body

               FROM @Conversacion

 

Tenemos el mensaje, procesarlo ahora pertenece al proceso de negocio, vamos a usar el método value para leer el XML simplificando este proceso para centrarnos en el envio y tratamiento.

 

set @id=  @cliente.value('(/Clientes/idCliente)[1]', 'int' )

SET @SaldoCliente=

CAST(N'<Clientes>

       <idCliente>' +  CAST(@id AS NVARCHAR(10))

     +'</idCliente>

      <CreditoConcedido>1000.36</CreditoConcedido>

       </Clientes>' as xml(MiEsquemaRecepcion));

            

   SEND ON CONVERSATION @conversationhandle

       MESSAGE TYPE Recepcion(@SaldoCliente)

 

 

       END CONVERSATION @conversationHandle;

 

 

 

       COMMIT

 

El que envió la petición ahora recibe la respuesta y la procesa como estime oportuno

 

WHILE (1=1)

 BEGIN

       BEGIN TRANSACTION

       WAITFOR

       (

        RECEIVE TOP(1)

                    conversation_group_id,

                    conversation_handle,

                    message_sequence_number,

                    service_name,

                    service_contract_name,

                    message_type_name,

                    validation,

                    message_body

      FROM Peticion

         INTO @Conversacion

         WHERE conversation_handle  = @ConversationHandle

      );

     

    SELECT CAST(Message_body as XML) FROM @CONVERSACION

       COMMIT

       SELECT @message_type_name=message_type_name

                    FROM @CONVERSACION

       IF @message_type_name =

             'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog'

          OR @message_type_name =

              'http://schemas.microsoft.com/SQL/ServiceBroker/Error'

       BEGIN

        select  'acabo'

        END CONVERSATION @ConversationHandle ;

        BREAK;

       END

 

 END

 

 

Esto es un ejemplo de envio y recepción de mensajes mediante Service Broker, aunque hayamos puesto bucles infinitos y waitfors, no entendamos esto como una espera activa ni muchísimo menos, El tipo de aplicaciones que se desarrollen y su complejidad dependrá muchísimo de los requisitos de negocio, SB sin embargo es una plataforma robusta estable, escalable y muy fácilmente configurable que puede permitir hacer aplicaciones asíncronas fácilmente.