Business Intelligence

Data Mining

Nested tables
En Microsoft SQL Server 2005 Analysis Services (SSAS), los datos se deben incluir en un algoritmo de minería de datos como una serie de escenarios contenidos dentro de una tabla de escenarios (Case Table). No todos los escenarios pueden describirse mediante una sola fila de datos. Por ejemplo, un escenario se puede derivar de dos tablas, una que contenga la información del cliente y otra las compras de ese cliente. Un solo cliente de la tabla de clientes puede tener varias compras en la tabla de compras. Esto dificulta la descripción de los datos usando una sola fila. Analysis Services proporciona un método exclusivo para controlar estos escenarios mediante el uso de tablas anidadas. El concepto de una tabla anidada se muestra en la siguiente ilustración.

nested tables

En este diagrama, la primera tabla, que es la tabla primaria, contiene información sobre los clientes y asocia cada cliente con un único identificador. La segunda tabla, la tabla secundaria, contiene las compras de cada cliente. Las compras de la tabla secundaria se relacionan con la tabla primaria mediante el identificador único, la columna CustomerKey. La tercera tabla del diagrama muestra cómo se combinan ambas tablas.

Una tabla anidada se representa en la tabla de escenarios como una columna especial que tiene un tipo de datos TABLE. En las filas específicas de escenario, esta clase de columna contiene filas seleccionadas de la tabla secundaria que forman parte de la tabla primaria

A fin de crear una tabla anidada, las dos tablas de origen deben contener una relación definida, de forma que los elementos de una tabla puedan relacionarse con los de la otra. En Business Intelligence Development Studio, puede definir esta relación dentro de la vista de origen de datos

Estructuras de minería de datos (Mining Structures)

Son varios los objetos que intervienen en la minería de datos en Microsoft SQL Server 2005 Analysis Services (SSAS). Los dos objetos principales que se utilizan son:

Data Mining Structure

La estructura de minería de datos es una estructura de datos que define el dominio de datos a partir del cual se generan los modelos de minería de datos. Una única estructura de minería de datos puede contener varios modelos de minería de datos que comparten el mismo dominio.

Las unidades de creación de la estructura de minería de datos son las columnas de la estructura de minería de datos, que describen los datos que contiene el origen de datos. Estas columnas contienen información como el tipo de datos, el tipo de contenido y el modo en que se distribuyen los datos.

Una estructura de minería de datos también puede contener tablas anidadas (nested tables). Una tabla anidada representa una relación de uno a varios entre la entidad de un escenario y sus atributos relacionados. Por ejemplo, si la información que describe al cliente se encuentra en una tabla y las compras del cliente en otra, puede utilizar tablas anidadas (nested tables) para combinar la información en un único escenario. El identificador del cliente es la entidad (Entity) y las compras son los atributos relacionados (related attributes).

La estructura de minería de datos no contiene información sobre el modo en que las columnas se utilizan para un modelo de minería de datos concreto, ni sobre el tipo de algoritmo que se utiliza para generarlo; esta información se define en el propio modelo de minería de datos.

Data Mining Model

Un modelo de minería de datos aplica un algoritmo de modelo de minería de datos a los datos que representa una estructura de minería de datos. Al igual que la estructura de minería de datos, el modelo de minería de datos contiene columnas. Un modelo de minería de datos está contenido en la estructura de minería de datos y hereda todos los valores de las propiedades definidas por la estructura de minería de datos. El modelo puede utilizar todas las columnas de la estructura de minería de datos o un subconjunto de las mismas.

Además de los parámetros que se definen en la estructura de minería de datos, el modelo de minería de datos contiene dos propiedades: Algorithm y Usage. El parámetro algorithm se define en el modelo de minería de datos y el parámetro usage en la columna del modelo de minería de datos. Estos parámetros se describen en la siguiente tabla.

algorithm  :Propiedad del modelo que define el algoritmo que se utiliza para crearlo.

usage :Propiedad de la columna del modelo que define el modo en que el modelo utiliza una columna. Puede definir las columnas de modo que sean columnas de entrada (Input), de clave (Key) o de predicción (Predict).

Un modelo de minería de datos es simplemente un objeto vacío hasta que se procesa. Al procesar un modelo, los datos que define la estructura se pasan por el algoritmo. El algoritmo identifica las reglas y los patrones en los datos y, después, utiliza dichas reglas y patrones para rellenar el modelo..

Una vez procesado un modelo, puede explorarlo utilizando los visores personalizados que se incluyen en Business Intelligence Development Studio y SQL Server Management Studio, o realizando consultas al modelo para llevar a cabo predicciones.

Puede crear varios modelos basados en la misma estructura. Todos los modelos generados a partir de la misma estructura deben proceder del mismo origen de datos. No obstante, los modelos puede diferir en lo que respecta a qué columnas de la estructura se van a usar, el modo en que se van a usar, el tipo de algoritmo que se emplea para crear cada modelo y la configuración de los parámetros de cada algoritmo. Por ejemplo, puede generar modelos de árbol de decisión o de clústeres independientes, cada uno con columnas diferentes de la estructura y utilizado para llevar a cabo diferentes tareas empresariales.

Mining Structure Columns

Las columnas de la estructura de minería de datos definen el modo en que un modelo de minería de datos utiliza las columnas de un origen de datos en Microsoft SQL Server 2005 Analysis Services (SSAS). Las columnas de la estructura se agregan a la estructura de minería de datos cuando se crea. Cada columna de la estructura de minería de datos contiene la siguiente información:

  • Id.
  • Nombre
  • Contenido
  • Tipo
  • Distribución (se incluye una distribución si la columna es continua).
  • Indicadores de modelado (los indicadores de modelado también se pueden definir en el modelo de minería de datos).
  • Enlace

Los algoritmos de terceros también pueden incluir propiedades personalizadas que se pueden definir en la columna de la estructura de minería de datos.

Las columnas de la estructura de minería de datos se diseñan para ser flexibles y extensibles, porque cada algoritmo que se utilice para generar un modelo de minería de datos puede utilizar diferentes columnas de la estructura para interpretar los datos.

Los tipos de datos y los tipos de contenido que definen las columnas de la estructura se derivan del origen de datos que se utiliza para crear la estructura. Puede cambiar esta configuración en la estructura de minería de datos; también puede establecer indicadores de modelado y establecer la distribución de columnas continuas.

Los temas siguientes describen las diferentes formas de definición de columnas de la estructura de minería de datos.

Tema

Descripción

Tipos de datos (Data Mining)

Describe los tipos de datos que se pueden utilizar para definir una columna de la estructura de minería de datos.

Tipos de contenido (Data Mining)

Describe los tipos de contenido que se pueden utilizar para definir una columna de la estructura de minería de datos.

Columnas clasificadas
(Classified Columns)

Describe los tipos de columnas clasificadas que se pueden utilizar para relacionar una columna de la estructura de minería de datos con otra.

Distribuciones de columnas

(Column Distributions)

Describe las distribuciones que se pueden utilizar para definir los datos de una columna de la estructura de minería de datos.

Métodos de discretización (Discretization Methods)

Describe los diferentes métodos que se pueden utilizar para discretizar datos en columnas continuas de la estructura de minería de datos.

Indicadores de modelado (Data Mining)

Describe los indicadores de modelado que se pueden utilizar para definir una columna de la estructura de minería de datos.

Data Types – Data Mining

Antes de procesar un modelo de minería de datos en Microsoft SQL Server 2005 Analysis Services (SSAS), puede definir los tipos de datos de las columnas de la estructura de minería de datos en la que se basa el modelo. Analysis Services es compatible con los siguientes tipos de datos para las columnas de la estructura de minería de datos:

  • Text
  • Long
  • Boolean
  • Double
  • Date

Cada uno de estos tipos de datos es compatible con uno o más tipos de contenido, que puede utilizar para delimitar más los datos de columna. En la siguiente tabla se identifican los tipos de contenido que admite cada tipo de datos. Para obtener más información acerca de los tipos de contenido.

Tipo de datos

Tipos de contenido admitidos

Text

Discrete, Discretized, Sequence

Long

Continuous, Cyclical, Discrete, Discretized, Key Sequence, Key Time, Ordered, Sequence, Time

Boolean

Discrete

Double

Continuous, Cyclical, Discrete, Discretized, Key Sequence, Key Time, Ordered, Sequence, Time

Date

Continuous, Discrete, Discretized, Key Time

Los tipos de contenido Time y Sequence sólo son compatibles con algoritmos de terceros

Content Types – Data Mining

En Microsoft SQL Server 2005 Analysis Services (SSAS), puede definir los tipos de datos de las columnas de una estructura de minería de datos para influir en el modo en que los algoritmos procesan sus datos al crear modelos de minería de datos. No obstante, definir los tipos de datos de columnas proporciona a los algoritmos información únicamente sobre el tipo de datos de las columnas, pero no acerca del comportamiento de esos datos. Por este motivo, cada tipo de datos de la minería de datos en Analysis Services admite uno o más tipos de contenido, que puede utilizar para describir el comportamiento de los datos que contiene la columna. Por ejemplo, si el contenido de una columna se repite en un intervalo concreto, como los días de la semana, puede especificar el tipo de contenido de esa columna como cíclico.

La siguiente lista describe los tipos de contenido de Analysis Services e identifica los tipos de datos que admite cada uno. Además de los tipos de contenido que aquí se enumeran, puede utilizar columnas clasificadas para definir tipos de contenido para algunos tipos de datos.

DISCRETE: La columna contiene valores discretos. Por ejemplo, una columna de género es una columna de atributos discreta muy habitual, en la que los datos representan un número contado, finito, de categorías de género. Los valores de una columna de atributos discreta no implican que los datos estén ordenados, aunque los valores sean numéricos; los valores están claramente separados y no existe ninguna posibilidad de que se den valores fraccionales. Los códigos telefónicos de cada zona son un buen ejemplo de datos numéricos discretos. Este tipo de contenido es compatible con todos los tipos de datos de Data Mining en Analysis Services.

CONTINUOUS: La columna contiene valores que representan un conjunto continuo de datos numéricos. A diferencia de una columna discreta, que representa datos contados, finitos, una columna continua representa datos de medidas; además, es posible que los datos contengan un número infinito de valores fraccionales. Una columna de ingresos es un ejemplo de una columna de atributos continua. Este tipo de contenido es compatible con los siguientes tipos de datos: Date, Double y Long.

DISCRETIZED: La columna contiene valores que representan grupos o depósitos de valores que se derivan de una columna continua. Los depósitos se tratan como si fueran valores ordenados y discretos. Este tipo de contenido es compatible con los siguientes tipos de datos: Date, Double, Long y Text.

KEY: La columna identifica una fila de forma única. Este tipo de contenido es compatible con los siguientes tipos de datos: Date, Double, Long y Text.

KEY SEQUENCE: La columna es un tipo específico de clave donde los valores representan una secuencia de eventos. Los valores están ordenados y no tienen que estar separados por una distancia equivalente. Este tipo de contenido es compatible con los siguientes tipos de datos: Double, Long, Text y Date.

KEY TIME: La columna es un tipo específico de clave donde los valores representan valores que están ordenados y que ocurren en una escala de tiempo. Este tipo de contenido es compatible con los siguientes tipos de datos: Double, Long y Date.

ORDERED: La columna contiene valores que definen un conjunto ordenado. No obstante, el conjunto ordenado no implica ninguna relación de distancia o magnitud entre los valores del conjunto. Por ejemplo, si una columna de atributos ordenados contiene información acerca de una lista de niveles de especialización que vayan del uno al cinco, no existe información implícita entre los niveles de especialización; un nivel cinco de especialización no es necesariamente cinco veces mejor que un nivel uno de especialización.  Las columnas de atributos ordenados se consideran discretas en términos de tipo de contenido. Este tipo de contenido es compatible con todos los tipos de datos de Data Mining en Analysis Services.

CYCLICAL: La columna contiene valores que representan un conjunto ordenado cíclico. Por ejemplo, los días numerados de la semana es un conjunto ordenado cíclico, ya que el día número uno sigue al día número siete. Las columnas cíclicas se consideran ordenadas y discretas en términos de tipo de contenido. Este tipo de contenido es compatible con todos los tipos de datos de minería de datos en Analysis Services.

Jonnathan De La Barra Acalorado
http://jonnathan187.multiply.com/

Development

Windows WorkFlow Foundation – Part III

Windows Workflow Persistence Services

Muchos procesos de negocios demoran largos períodos de tiempo en completarse. Mantener el Workflow en memoria no sólo es poco práctico (por limitaciones de memoria), sino que también evita el escalamiento, porque una instancia debe ser procesada en un solo servidor.

Muchos de estos workflows de larga duración no están actualmente ejecutando un flujo o una lógica de procesos y son efectivamente lentos, esperando un ingreso por parte de un usuario u otro sistema. Al descargar una instancia lenta, la aplicación host puede ahorrar memoria y permitir la escalabilidad entre servidores que están procesando.

Cuando ciertas condiciones ocurren mientras un workflow se está ejecutando, el motor del runtime de workflow usa un servicio de persistencia, si uno es cargado en el runtime, para persistir el estado de información sobre la instancia workflow. Estas condiciones incluyen las siguientes:

Ø  Cuando transacciones atómicas en actividades TransactionScopeActivity y CompensatableTransactionScopeActivity son completadas.

Ø  Cuando una instancia workflow se torna lenta y el flag UnloadOnIdle es establecido en true para un WorkflowPersistenceService.

Ø  Cuando la aplicación host del runtime llama a  System.Workflow.Runtime.WorkflowInstance.Unload o a System.Workflow.Runtime.WorkflowInstance.RequestPersist en la instancia workflow.

Ø  Cuando una instancia workflow es terminada o finaliza.

Ø  Cuando una actividad personalizada que usa el atributo PersistOnCloseAttribute se completa.

Ø  Cuando una actividad CompensatableSequenceActivity se completa.

Si se cumple alguna de estas condiciones y el servicio de persistencia es agregado al motor del runtime, éste llama a métodos que son proporcionados por el servicio de persistencia para guardar el estado de información sobre la instancia workflow. De manera similar, cuando el motor del runtime tiene que recuperar una instancia workflow previamente persistida, llama a métodos que son proporcionados por el servicio de persistencia para cargar este estado de información. En otras palabras, el motor del runtime de workflow determina cuándo debería producirse la persistencia, pero la ejecución de las operaciones de persistencia necesarias depende de un servicio de persistencia.

Creando servicios de persistencia

Se pueden crear servicios de persistencia derivando una clase desde la clase WorkflowPersistenceService. Es posible agregar su servicio de persistencia al motor del runtime del workflow invocando a AddService o realizando una entrada apropiada en el archivo de configuración de la aplicación.

Windows Workflow Foundation provee la clase SqlWorkflowPersistenceService, un servicio de persistencia “out-of-box”, el cual se puede usar como está o extenderlo.

Bloqueando información de estado del workflow

El motor del runtime de workflow tiene semánticas para bloquear la información de estado del workflow, para usarlas en ambientes donde los servicios de persistencia que se están ejecutando en distintos procesos pueden llegar a tener acceso a un solo almacenador de datos. La clase WorkflowPersistenceService le permite soportar esta funcionalidad del runtime proporcionando un parámetro a SaveWorkflowInstanceState, que especifica si la información de estado de una instancia workflow debería ser destrabada en el almacenador de datos, y proporcionando un método UnlockWorkflowInstanceState para desbloquear información de estado del workflow previamente bloqueado. En un servicio de persistencia que involucra al bloqueado, una llamada a LoadWorkflowInstanceState debería bloquear la información de estado para una instancia workflow.

Cuando cree su propio servicio de persistencia, tire un PersistenceException si el servicio no guarda la información de estado en su almacenador de datos o carga información de estado desde su almacenador de datos. El runtime del workflow espera este comportamiento.

Persistence Service Batching Behavior

Un mecanismo de batching es proporcionado por servicios que usan un almacenador duradero para salvar información de estado de un workflow. En estos casos es importante mantener consistencia entre el almacenador que es usado por el servicio de persistencia y el estado interno del runtime del workflow. Se le puede agregar funcionalidad al servicio, que es definida por la interfaz IPendingWork, y hacer que participe en el batching de la transacción del workflow que es proporcionado por el servicio WorkflowCommitWorkBatchService, agregando estos cambios a su almacenador de datos como ítems de trabajo al WorkBatch.

Complex Hosting Scenarios

Un escenario posible para el despliegue de las soluciones de Windows Workflow Foundation es crear múltiples aplicaciones host, cada una con un conjunto diferente de servicios que estén corriendo en distintas configuraciones de escritorio y servidores. Bajo este escenario, un requerimiento puede ser que algunos workflows que están definidos en la solución sólo se puedan ejecutar en ciertos sistemas. Los servicios “out-of-box” en Windows Workflow Foundation, como el servicio SqlWorkflowPersistenceService, no soportan este tipo de configuración. Para controlar qué instancias workflow se cargaran en qué sistema, se deberá crear un servicio de persistencia personalizado.

Windows Workflow Tracking Services

Windows Workflow Foundation le permite rastrear su información relacionada con un workflow de una manera consistente, confiable y flexible. El framework de rastreo de Windows Workflow Foundation está diseñado para permitirles a los hosts observar las instancias workflow durante la ejecución capturando eventos que son disparados durante el tiempo de ejecución.

El framework es un diseño “conectable” que les permite a hosts escribir su propio servicio de rastreo o usar un servicio de rastreo “out-of-the-box” o de un tercero. Adicionalmente, debido a que el runtime de Windows Workflow Foundation permite agregar varios servicios de runtime durante su tiempo de vida, múltiples servicios de rastreo de diferentes tipos pueden ser habilitados simultáneamente. Por ejemplo, Windows Workflow Foundation contiene un servicio “out-of-box” SqlTrackingService que permite escribir una cantidad configurable de información de rastreo a una base de datos SQL Server.

Windows Workflow Foundation contiene varias características incorporadas para permitir el rastreo en una aplicación workflow.

l  Se asegura de que el rastreo ocurra de una manera consistente.

l  Provee escalabilidad y confiabilidad.

l  Permite que los datos sean rastreados a pesar del almacén de datos subyacente.

l  Provee una locación para consultar por datos relacionados con el workflow por medio de ambientes de hosting.

l  Brinda la habilidad para consultar en ciclos de vida de workflows pasados y presentes, y determinar posibles futuros pasos de ejecución de instancias workflow.

Perfiles de rastreo

Los servicios de rastreo determinan la cantidad de datos que reciben usando un perfil de rastreo para filtrar esos datos. Un servicio de rastreo puede recibir eventos workflow, estados de ejecución, e ítems de rastreo de datos personalizados del usuario. El servicio de rastreo es responsable por los datos de rastreo que recibe del runtime cuando una instancia workflow se está ejecutando. Puede almacenar los datos en un archivo o en una base de datos, crear un almacén de consultas en memoria, escribir los datos en el log de eventos del sistema, o sólo darle salida de los datos de rastreo a la consola.

Se pueden crear perfiles de rastreo usando un esquema de Perfil de Rastreo XML, o programáticamente, usando el modelo de objeto Tracking Profile. Adicionalmente, los perfiles de rastreo basados en XML pueden ser deserializados a una instancia TrackingProfile usando el TrackingProfileSerializer de la API.

Cuando se usa el rastreo en Windows Workflow Foundation, se puede rastrear un simple evento o un grupo de eventos que son levantados durante la ejecución del workflow. Los eventos que pueden ser rastreados para actividades están definidos en la enumeración ActivityExecutionStatus.

En adición a los servicios de rastreo para actividades, la infraestructura de rastreo también le permite rastrear eventos que ocurran a nivel de la instancia workflow. El nivel de instancias de eventos que es posible rastrear puede ser definido en la enumeración TrackingWorkflowEvent.

Tipos de Worflows Soportados

Existen dos modelos de workflow: Sequential y State-Machine.

El modelo Sequential ejecuta actividades con un patrón predefinido, mientras que el modelo de State-Machine sólo conoce los estados posibles del sistema, a qué se dedica cada estado, a qué eventos externos responde y cómo (aquí se suele incluir cierta lógica en forma de workflow secuencial).

Sequential Workflow

Los workflows secuenciales están orientados a aplicaciones donde las actividades del workflow son ejecutadas en algún tipo de secuencia. Esta secuencia puede incluir loops, decisiones y otros tipos de controles de flujo, pero, no obstante, el workflow tiene un camino definido de principio a fin.

wwf_Sequential

State-Machine Workflow

En un workflow State-Machine, el workflow en sí está formado por un conjunto de estados. Cada estado puede recibir una cierta cantidad de conjuntos de eventos. El workflow State-Machine puede tener un estado final. Cuando una transición es hecha al estado final, el workflow se completa.

Organizar actividades workflow de esta manera es útil cuando la secuencia exacta de eventos es desconocida, como para un proceso de negocio Event-Driven, o cuando el número de posibilidades hace que definir todos los caminos posibles sea poco práctico. Un ejemplo primario de esto es un workflow que coordina el trabajo de personas en vez de aplicaciones. Los workflows State-Machine hacen que sea más fácil saltear pasos “al vuelo”, saltar a cualquier paso del proceso de negocio, o cancelar el proceso de negocio en cualquier momento. Los State-Machines pueden, también, proveer una manera de definir workflows que coincida en el modo en que algunas organizaciones piensan y documentan sus procesos de negocios. En casos como éstos, modelar workflows de esta manera puede ayudar a los desarrolladores y a la gente de negocios a trabajar juntos de una forma más eficiente.

También es posible anidar estados. Un evento definido en un estado externo aplica ambos a ese estado y a todos los estados que contiene. Esto provee una manera directa de expresar eventos que puedan ocurrir en cualquier momento en cualquiera de estos estados, como la cancelación de una orden.

wwf_StateMachine

Jonnathan De La Barra Hot