enero 2007 - Posts
Buenas
¿cansado de seleccionar texto en Internet Explorer? ¿copiarlo y luego enviarlo por mail?
Pues ahora lo puedes hacer con solo 1 click (en realidad 2), utilizando Snip IT, un nuevo addon para Internet Explorer que permite seleccionar texto y enviarlo por mail.
Se puede descargar desde aquí; y además interactua con Microsoft Outlook, Microsoft Hotmail, Yahoo Mail, Gmail y el cliente mail por defecto de para el link MailTo.
Saludos
El Bruno
Buenas
pues no se acabó.
Hace un tiempo hablé sobre el demente que hizo el Robosapiens con Lanzallamas; lamentablemente se me pasó de largo comentar el otro demente pariente del primero que armó un Lanzallamas hecho con un Lego; pero mas miedo me da
- La base lanzamisiles de Mazinger Z; aquí tengo que invertir tiempo y €€€ en psicoanálisis porque no podré dormir tranquilo @night después de ver esto; pesadillas seguro
- Robot insecto que camina en el agua; esto si que me da asco; uno con gafas y cara de bueno que pretentde crear garrapatas y otros bichos electrónicos
- El Robocoaster de Kuka; se ve que a nuestros amigos de Kuka la produccion de brazos industriales no les alcanza e inspirados en 2 frikis
de los que ya hablamos, ahora existe un nuevo brazo robot en el que te sientas, te abrochas el cinturon comienzas a rezar si sabes y a partir de ahi tratas de no devolver todo lo que has comido en toda la semana
y de nuevo, ¿qué tiene que ver todo esto con Business Intelligence?, pues nada de nada; pero en el año y meses que llevo en Avanade he tenido la suerte de trabajar con
- VSTS y Team Foundation Server; casi todos los posts en mi Live Space están relacionados con el fabuloso mundo de TFS y las migraciones de Beta 3 a RTM; esto es casi septiembre del 2005.
- Windows Mobile, poco pero lo suficiente como para aprender lecciones sobre worst practices
- Microsoft CRM, tema que me apasiona y que he tenido que abandonar :S, pero que por suerte puedo seguir gracias al blog de Marco
- Office 2007 y MOSS 2007, cuando todavía estaban en período de prueba y pero que eran una revolución en cuanto a plataforma
- etc ...
el paso natural para estos 6 meses hubiese sido elegir proyectos con .Net 3.0; y comenzar a pelearme con WPF, WCF y WWF; pero como ya he tenido mucho Workflow en mi vida; y me dieron la oportunidad de jugar con Business Intelligence; acepté la propuesta porque:
- Es un tema super interesante
- Las herramientas que tenemos ahora con Microsoft SQL Server 2005 son muy potentes y super adictivas
- Hace falta tener muchas variables en cuenta; existen muchos factores que afectan este tipo de proyectos
- Después de currar durante meses, tal vez la única salida que tengamos sea un informe de 5 líneas
- Me molan los cubos desde siempre ... la capacidad de interpretar y analizar información es algo que me apasiona
Asi que cada tanto postearé mis experiencias en este mundillo, y mientras también postearé sobre todo lo demás que es tan conocido, como útil, como popular, como el "Hello World":D
Saludos
El Bruno
PD: Para los que quieran un buen blog de Business Intelligence, pasen por lo de Gorka.
Buenas
hace unos días comentaba porque es aconsejable no aplicar todas las reglas de normalización en los diseños OLAP; y en que consistía un diseño Star Schema o Snowflake Schema. Hoy quiero hablar un poco de las herramientas que poseemos en Microsoft para el mundo de Business Intelligence.
Obviamente la primer herramienta en la que pensamos es Analysis Services 2005 (SSAS). Analysis Services es parte de Microsoft SQL Server 2005, junto con Integration Services (SSIS), Notification Services (SSNS) y Reporting Services (SSRS).
Por lo general, los proyectos de Business Intelligence suelen utilizar SSIS, SSAS y SSRS; donde cada una de estas tecnologías se encarga de una etapa particular del proyecto (este es tema para un post en el futuro). En esta ocasión hablaré un poco sobre las herramientas que tenemos para trabajar con Analysis Services 2005.
1 - SQL Server Managment Studio, es la herramienta general de administración para Microsoft SQL Server 2005. Desde la misma podremos administrar las bases de datos relacionales, las bases de datos de Analysis Services, los paquetes de Integration Services y también (como no) a Reporting Services.
2 - Business Intelligence Development Studio (BIDS) es la herramienta de desarrollo para Analysis Services integrada dentro de Visual Studio 2005 y es la que nos permite crear, editar, y administrar cubos, dimensiones, data source views, etc.
Desde el punto de vista de un desarrollador (el mío) utilizar Visual Studio 2005 cuando trabajamos con Analysis Services 2005 tiene muchas ventajas, por ejemplo:
- tenemos la posibilidad de gestionar con un control de versiones (TFS o VSS) todos los elementos del proyecto
- incluir un proyecto de AS dentro de una solución mas amplia, por ej, con otros proyectos de Visual Basic .Net
- trabajamos con ventanas y funcionalidades que son conocidas para los desarrolladores .Net, Output Pane, Task Pane, etc.
- la solución y los items de AS puede ser parte del ciclo de vida de un proyecto mas grande, gestionado por ejemplo con Agile e interactuar con los WorkItems necesarios
- etc.
Hasta aquí la principal herramienta con la que trabajo, aunque después también deberé hablar del SQL Server Profiler, ya que ahora también nos permite levantar trazas contra una base de datos de Analysis Services, tenemos muchas plantillas básicas para trazas particulares, etc. ¿mola no?
Saludos
El Bruno
Buenas
hace unos días cuando hablaba sobre accesibilidad no tuve en cuenta los dispositivos móbiles. En los mismos las capacidades son limitadas y la verdad que si navegamos un site muy Web 2.0; nos podemos encontrar con bastantes sorpresas desagradables.
Pero gracias a mi PDA; pude comprobar lo siguiente:
- Navegar el sitio de Live para Mobile
- Realizar una búsqueda, por ejemplo "el bruno"
- Ya podemos ver que los resultados se presentan con un Html bastante simple como para un dispositivo; pero que pasa si navegamos uno de los resultados?
- Veremos que (por ejemplo en mi site) no se navega a la url seleccionada directamente; sino que se pasa por un proxy que se encarga de presentar los contenidos de esta url en un formato mas simple.
Esta es la url de navegacion, tiene pocos parámetros y es bastante simple de utilizar: http://mobrender.com/proxy.aspx?s=http%3A%2F%2Fwww%2Eelbruno%2Ecom%2F%3F&m=h&q=el&q=bruno&ru=http%3A%2F%2Fmobile%2Emsn%2Ecom%2FSearch%2FResults%2Easpx%3F__redir=1%26q=el%2B-bruno%26d=allloc%26si=0&rs=Volver%2B-a%2B-resultados&lc=es-ES&hmac=vdhjlNAb
Podremos ver que la presentación de los contenidos del site se realizan a traves de mobrender.com. ¿Y que sucede si navegamos directamente http://mobrender.com/proxy.aspx?; pues que nuevamente nos vemos redireccionados a home de Mobile Live http://mobile.msn.com/pocketpc/default.aspx.
Como quedaría una redireccion Mobile a Geeks.ms; pues así: http://mobrender.com/proxy.aspx?s=http%3A%2F%2Fgeeks%2Ems%2F%3F&m=h&q=geeks&ru=http%3A%2F%2Fmobile%2Emsn%2Ecom%2FSearch%2FResults%2Easpx%3F__redir=1%26q=geeks%26d=allloc%26si=0&rs=Volver%2B-a%2B-resultados&lc=es-ES&hmac=qDwEcgpn
He estado buscando un poco en la Web información relacionada con MobRender y no he encontrado nada interesante, aunque me gustaría saber (mas allá de suponer) un poco como funciona y con que parámetros se maneja. Si veo algo, completo el post :D
Saludos
El Bruno
Buenas
mientras sigo esperando que deje de llover escribiendo un poco sobre mis nuevas experiencias en el fabuloso mundo de Business Intelligence; no puedo dejar de recomendar a todas aquellas personas que utilicen Microsoft SQL Server 2005; que revisen los documentos de Project REAL.
¿En qué consiste el Project REAL?, pues es una implementación de referencia para un projecto casi real de Business Intelligence; donde se explican paso a paso las experiencias y lecciones aprendidas durante el mismo; y también se desprenden algunas Best Practices a tener en cuenta en este tipo de proyectos.
Un detalle, este proyecto no es una demo (como por ejemplo la base de datos AdventureWorks), y para asegurar la calidad del mismo han participado partners como: Apollo Data Technologies, EMC, Intellinet, Panorama, Proclarity, Scalability Experts, y Unisys.
Si tu proyecto no es de BI, pero utilizas ETLs por ejemplo, puedes darle un vistazo a la seccion de Integration Services ya que aporta conceptos y experiencias muy interesantes; lo mismo aplica para aquellas personas que utilicen Reporting Services.
He aquí los links de acceso a la información principal del Proyect REAL:
- Project REAL
- Download Reference Implementation
- Project REAL Technical Overview
Read an introduction to the Project REAL system, its data models, subsystems, and deployment scenarios. This paper is the first in a series that explores various aspects of Project REAL and the best practices that it has revealed. - Project REAL: Analysis Services Technical Drilldown
Get a detailed technical discussion of designs and best practices for Analysis Services that were developed in Project REAL. This paper describes each of the different types of objects, such as data sources, data source views, dimensions, hierarchies, attributes, measure groups, and partitions in detail. - SQL Server 2005 Integration Services: Lessons from Project REAL
Learn some of the best practices and other lessons learned from the ETL portion of the first phase of Project REAL. - Business Intelligence ETL Design Practices
Download this white paper to understand ETL design decisions that were made for each scenario and implementation detail of the Project REAL effort for SQL Server 2005 Integration Services at Barnes & Noble. - Analysis Services 2005 Migration
Learn about the Migration Wizard, a fast and effective tool for moving your existing cubes to Analysis Services 2005. - Project REAL: Data Lifecycle—Partitioning
Download this white paper to get a detailed discussion on how partitioning was implemented in Project REAL, both on the relational data warehouse and in the Analysis Services cubes. - Inventory Predictive Modeling via Microsoft SQL Server 2005 Analysis Services
Discover an approach for building retail out-of-stock predictive models using SQL Server 2005 Analysis Services. When applied to Project REAL data, these models produced very accurate predictions. - Developing Custom Components in SQL Server Integration Services for Project REAL
Read about key learnings made while implementing the custom pipeline components for extracting and parsing data. - Project REAL Monitoring and Instrumentation
This paper describes the system and network instrumentation and monitoring used for Project REAL, focusing on the tools used, their installation and configuration, and the lessons learned. - Using Visual Studio 2005 to Perform Load Testing on a SQL Server 2005 Reporting Services Report Server
This article contains step-by-step instructions for creating a Web page load test, and sample code and instructions for creating a unit test. Also, instructions are provided for setting up the load test that you use to specify load patterns. - Project REAL: Enterprise Class Hardware Tuning for Microsoft Analysis Services
This paper describes best practices for hardware optimization for a multi-terabyte SQL Server 2005 data warehouse and cube. It describes hardware testing and tuning exercises conducted with large-scale Analysis Services cubes.
Nuevamente les recomiendo invertir un poco de tiempo en leer este excelente material de referencia.
Saludos
El Bruno
Buenas,
hace un tiempo leía un post de Paco Martinez relacionado con la accesibilidad en las nuevas aplicaciones Web 2.0. El mismo perdón Paco te plagio un segundo nos comentaba que uno de los principales problemas de la Web 2.0 es el dinamismo. ¿Porqué? porque básicamente las aplicaciones lectoras de pantalla que utilizan las personas con algun tipo de problema, solo "leen" el HTML que el contiene el navegador y si utilizamos mucho AJAX, la podemos liar bastante (uds saquen sus conclusiones).
Hoy leo que el portal de Carrefour ya soporta un buen nivel de accesibilidad propaganda gratuita, que hay un nuevo proyecto para construir building blocks con Ajax para MOSS 2007; y pienso como afecta esto a MOSS 2007. Hoy ya tenemos muchas aplicaciones basadas en el nuevo Sharepoint y si bien es bonito; también es muy Web 2.0. Aqui entra en juego mi amigo Juan Carlos, que me mostró un par de cosas que no conocía de MOSS 2007.
Por ejemplo, ¿que pasa con el menú Site Actions que tenemos en la esquina superior derecha en MOSS 2007?
Este menú no es muy accesible en su configuración original, pero sin embargo, podemos modificar un poco MOSS 2007 para solucionar este problema. Lo primero que debemos hacer es desactivar los CSS en el portal y volver a navegar el mismo. Una opción para lograr esto es utilizar la Internet Developer Toolbar en su menu Disable - All CSS
Cuando hemos desactivado esta opción, nos aparece una version con HTML plano de MOSS 2007 y una de las opciones que nos ofrece es Turn on more accesibilty mode (activar modo de accesibilidad)
Una vez que seleccionamos esta opción y refrescamos el home, lo primero que nos llama la atención es que la apariencia de MOSS 2007 no ha cambiado; sin embargo si nuevamente hacemos click en el menu Site Actions, veremos que no aparece mas el desplegable sino que tenemos una nueva ventana (de facil interpretación para los lectores de pantalla) para con las opciones que contiene el menu
Este comportamiento se repite en todas las opciones dinámicas que posee MOSS 2007; y realmente supone un gran avance en lo que accesibilidad se refiere.
Pero esto no es todo aqui me quemo material para otro post; una vez activado el modo accesible de MOSS 2007 también podemos acceder a todas las opciones del mismo simplemente utilizando el teclado. Para ver estas opciones también utilizamos la Internet Developer Toolbar y seleccionamos el menú View - Access Keys
Después de seleccionar esta opción podremos ver como los accesos directos se resaltan y podremos acceder directamente a los mismos con Alt + L por ejemplo y luego Enter para ver el menu de usuario de Sharepoint
Este es un tema muy importante y creo que muchas veces, por el solo hecho de comenzar a utilizar algun tipo de tecnología novedosa, nos olvidamos de un pequeño porcentaje de usuarios que tal vez tenga algun tipo de problema al utilizar algun producto nuestro. Por suerte, herramientas como MOSS 2007 ya tienen previsto este tipo de situaciones y ademas nos brindan una serie de guidelines para que sigamos en la dirección correcta.
Saludos
El Bruno
Buenas,
año nuevo en Avanade y de nuevo a pensar en que invertir los €€€ que tenemos para tecnología durante este año. Despues de ver los requerimientos de la CTP de Enero del 2007 de ORCAS seguramente me decido por otro disco externo que espero que no me traiga tantos problemas como el anterior en realidad la mejor opcion es la Wii, o algunos complementos USB, pero todavía los directivos no comparten esta idea de tecnología. Pero como decía, impresionante que la descarga completa sean 7 archivos de 700 MBs y uno de 50.5 MBs; en total 4950.5 MBs ¿ eso entra en un dvd ?. Aqui les dejo la url de la descarga y parte de información relacionada con el CTP.
http://www.microsoft.com/downloads/details.aspx?FamilyId=1FF0B35D-0C4A-40B4-915A-5331E11C39E6&displaylang=en
The highlights of this CTP include:
- Extended, more powerful data APIs with the ADO.NET Entity Framework and LINQ to ADO.NET
- With the ADO.NET Entity Framework developers will be able to model the view of the data that is appropriate for each one of the applications they are building, independently of the structure of the data in the underlying database. The use of the Entity Data Model (EDM) enables developers to design models that follow the concepts built into the application, instead of having to map them to constructs available in relational stores. Once the model is in place, the powerful ADO.NET Entity Framework API is used to access and manipulate the data as .NET classes or as rows and columns, whatever is appropriate for each application.
- ADO.NET is fully integrated with LINQ and offers many options for using LINQ in various scenarios: LINQ to SQL provides direct access to database tables from the programming environment, LINQ to Entities enables developers to use LINQ over EDM models, and LINQ to DataSet allows the full expressivity of LINQ to be used over DataSets.
- C# 3.0 Language Support: This CTP implements all of the C#3.0 language features from the May LINQ CTP including:
- Object and Collection Initializers
- Local Variable Type Inference and Anonymous Types
- Lambdas bound to Delegates and Expression trees
- LINQ to Objects API
- The LINQ to Objects API supports queries over any .NET collection, such as arrays and Generic Lists. This API is defined in the System.Linq namespaces inside System.Core.dll. Click here for more details about LINQ.
- ClickOnce improvements
- This CTP delivers ClickOnce improvements for the deployment of Windows Presentation Foundation applications, alternative browser support and ISV rebranding.
- Managed classes for Elliptic Curve Diffie Hellman and Elliptic Curve Digital Signature Algorithm cryptographic functionality
- With the addition of these classes, cryptographic developers now have managed classes for Elliptic Curve Diffie Hellman secret agreement and Elliptic Curve Digital Signature Algorithm signing. These classes are built on the new CNG cryptographic libraries in Windows Vista, but still follow the familiar patterns of the cryptographic classes in .NET Framework 2.0.
- Runtime and design-time support for Office 2007 (including Outlook 2007)
- Customers can build managed code add-ins with a consistent development experience, regardless of which version of Office they target, which Office application(s) they target, and which programming language they choose. Managed code add-ins enable developers to use strongly-typed class members, with the help of modern development tools, including intellisense and auto-complete. Additionally add-ins can potentially run in multiple versions of Office, enabled by abstracting version-specific code and supported by a version-resilient infrastructure.
- Support for advanced lifetime management of add-ins and their AppDomains
- We’ve added the helper classes that manage the lifetime of add-ins, the objects passed between the host and add-ins, and even of the AppDomains the add-ins live in. By using the ContractBase and LifetimeToken handle, pipeline developer can let the hosts and add-ins act as if everything, including the AppDomain the add-in was activated in, was controlled by the garbage collector even though .Net Remoting would normally make that impossible.
- Client service support for Login/Logout, Role management and Profiles
- ASP.NET 2.0 shipped with new application services for authentication, authorization and personalization. Most of these services are not tied to ASP.NET and can work in non-web applications. This CTP enables the use of these services in smart client applications for Logon/Logoff, Role management and profiles.
- A trace listener that logs event to ETW, event tracing for Windows in Vista
- Event tracing for windows is greatly improved in Vista and the most performant loggings facility available in Windows. The System.Diagnostics.EventProviderTraceListener allows managed tracing to provide events to the Vista’s ETW infrastructure. This is a highly performant, thread-safe listener.
- Jscript Intellisense support
- Jscript code formatting and Intellisense support provide developers with a richer editing experience. These improvements enable the IDE to provide statement completion, color syntax highlighting and in-place documentation to Jscript and associated script models such as ASP.NET AJAX.
- A new numeric type that provides support for very large numbers (Beyond the range of In64)
- All existing numeric types in the Framework have a limited range. This is the first type that supports arbitrary range and will extend to accommodate any large number as needed. This type lives in the new System.Numeric namespace where all new numeric and arithmetic features are going to reside. It supports all the basic arithmetic operations including things like Pow, DivRem and GreatestCommonDivisor. It implements the following interfaces: IFormattable, IComparable, IComparable<BigInteger> and IEquatable<BigInteger>. It is serliazable and immutable. It has implicit casts from all basic integral types and explicit casts to/from all numeric type. To learn more about this type – please visit the BCL team blog.
- LINQ over XML (XLinq)
- Enable further LINQ over XML feature support (in addition to the functionality available in the Oct 2006 CTP) such as the ability to apply XLST to transform into and out of XLinq trees, support for System.XML reader/writer interfaces for improved XML sharing with DOM applications and System.XML schema validation for XLinq nodes.
- SQL Server Compact Edition (SSCE)
- SQL Server Compact Edition (SSCE) provides a local relational data store for occasionally connected client applications from desktops to devices. SSCE is light weight, embeddable and is easy to deploy with your client applications without requiring complex administration work from users. Timestamp (row version id) data type, improved table designer, Query processor enhancements and support for local transaction scope are some of the new features you find in this version of SSCE.
Saludos
El Bruno
PD: He comenzado la descarga, a ver cuando termina :D
Buenas
hace ya una pila de tiempo; esto es en mi épocas de problemas constantes con los Spaces de Msn o Live; había hablado un poco al respecto de Internet Explorer Developer Toolbar (esto fue el 12 de diciembre de 2005).
Mas de un año después seguimos en Beta, ahora Beta 3, pero con algunas novedades interesantes. No voy a escribir al respecto porque ya lo han hecho Sergio (gracias Sergi) y la gente de IE; pero me guardo el link con la descarga para no tener que buscarlo en otras oportunidades.
Saludos
El Bruno
Buenas
la cara de nuestros amigos lo dice todo.
Que han hecho? pues bien, partiendo de la interfaz de un proyecto en CodePlex para controlar un joystick en C#, con un par de modificaciones para lograr que los movimientos sean mas realistas; han capturado los movimientos básicos de algunas jugadas de tennis y las han llevado a la realidad con este soft al que luego han conectado el brazo Kuka.
Como el WiiMando se reconoce como un Joystick absolutamente revolucionario normal ajustar los detalles entre estos 2 componentes de hard no ha sido muy complicado.
Ahora bien, dentro de poco mas de 1 mes sale la PS3 a la que no me anoto ni loco, y mientras sigo buscando mi Wii y mi camara Wifi; aprovecharé y felicitaré a estos 2 frikis desde aquí y espero que cuando cambien al modo Sword no salgan lastimados.
Aqui el video del funcionamiento completo:
Saludos
El Bruno
Buenas,
desde que llegó el frío a Madrid y en la única semana que no he hecho ningun viaje en avión desde Agosto, mi fabulosa HP IPaq tiene problemas de sincronización con Windows Mobile Device Center.
El detalle del error es sumamente descriptivo:
Aprovechando que en Windows Vista el Event Viewer mola en xml, puedo ver una descripción mucho más interesante del evento:
1 Log Name: Application
2 Source: RapiMgr
3 Date: 1/25/2007 12:54:22 PM
4 Event ID: 7
5 Task Category: None
6 Level: Error
7 Keywords: Classic
8 User: N/A
9 Computer: VISTA-BRUNOC.corp.avanade.org
10 Description:
11 Windows Mobile-based USB device is plugged in but is unable get a network with the desktop.
12 Event Xml:
13 <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
14 <System>
15 <Provider Name="RapiMgr" />
16 <EventID Qualifiers="49152">7</EventID>
17 <Level>2</Level>
18 <Task>0</Task>
19 <Keywords>0x80000000000000</Keywords>
20 <TimeCreated SystemTime="2007-01-25T11:54:22.000Z" />
21 <EventRecordID>15772</EventRecordID>
22 <Channel>Application</Channel>
23 <Computer>VISTA-BRUNOC.corp.avanade.org</Computer>
24 <Security />
25 </System>
26 <EventData>
27 <Data>
28 </Data>
29 </EventData>
30 </Event>
Pues bien, el siguiente paso fue buscar Windows Mobile-based USB device is plugged in but is unable get a network with the desktop. en Live Search para ver si alguien había solucionado este problema, pero como no encontré ninguna referencia interesante; me tocó a mi. Asi que les paso los pasos para solucionar el problema:
- Verificar en la PDA el modo de sincronización sea Modo de Sincronización en Serie USB.
- Verificar en la PDA en las conexiones que la conexion por defecto sea USB. (Ojo no USB Default)
- Verificar en Windows Mobile Device Center la configuración de sincronización con el dispositivo
- Eliminar todos los elementos de sincronización (Contacts, Mails, Tasks, etc) e ir agregando uno a uno para ver cual es el que da el error.
- Opcional, no sincronizar los mails con attachments (ahora parece que funciona, pero antes me daba error).
Pues bien, esta configuración es la que funciona aunque he encontrado un par de HotFixs no oficiales para Windows Mobile Device Center (esta en beta todavía) que tal vez solucionen alguno de estos problemas. Ya les contaré :D
Saludos
El Bruno
Buenas
aunque no lo parezca, hay cosas mas dificiles que el cubo de Bedlam; una de ellas puede llegar a ser comprender algunos conceptos de los otros cubos.
Supongamos una Base de Datos de Producción de una solución; usualmente estas bases de datos, han sido normalizadas y si tenemos un dato como la descripción de un producto (en la tabla Produto); lo normal es que si actualizamos esta información la misma se refleje (a través de joins) en todas las relaciones que posea en la base de datos para poder trabajar con la información correcta.
Cuando necesitamos consultar esa información cruzando diferentes entidades, un JOIN que utilice las claves correspondientes en cada entidad nos devolverá los resultados actualizados que necesitamos.
En una Base de Datos de DataWareHouse, dentro de una dimensión existen muchos atributos relacionados entre sí que forman una jerarquía (hierarchy, paso de poner los nombres en castellano); por ejemplo un producto que pertenece a una categoría; que a su vez es parte de un grupo.
Producto <--> Categoría <--> Grupo
Cuando necesitamos consultar esa información, usualmente necesitamos realizar demasiados JOINS que suelen afectar el rendimiento de las aplicaciones. Por ejemplo, si deseamos consultar un Producto en particular relacionado con un Año, la relacion se hace por cada registro de la tabla Producto con cada registro de la tabla Año; luego también deberemos agregar las relaciones correspondientes con Categoria y con Grupo. Y sobre este total de registros ademas tendremos que filtrar sobre un año en particular.
Año <--> (Grupo <--> Categoria) <--> Producto
Esto hace que los querys contra una base de datos multidimensional (toma palabra del futuro !!!) sean mucho mas lentos que las consultas comunes contra una base de datos relacional. Pero y este es un gran PERO un detalle importante en las base de datos de DataWareHouse es que los datos no cambian dinámicamente como en producción, por lo que tenes datos "redundantes" o repetidos no afecta a la perfomance de la misma (si al tamaño, pero hoy los discos son baratos y sql es cada vez mas rápido).
Esto nos lleva a una práctica comun en BI, donde todos los atributos de una tabla (antes llamados filas) se almacenan en una única dimensión (y se comienza a repetir la información como churros). El concepto se basa en que las tablas de dimensiones son pequeñas, en comparacion con las tablas de hecho (Fact Tables), y cuando cruzamos informacion entre dimensiones las mismas suelen tener una performance de respuesta muy buena.
Almacenar todos los atributos desnormalizados no se si esta palabra existe en una tabla es lo que se conoce como STAR SCHEMA, porque usualmente se trabaja con una única tabla con toda la información "rodeada" de una tabla para cada dimensión que sea necesaria.
Nota: Una imagen vale mas que mil palabras -->
Luego cuando comenzamos a normalizar las tablas de dimensiones nuestra STAR se comienza a parecer mas a un SNOWFLAKE SCHEMA (copo de nieve).
Nota: No conseguí una imagen buena :(
Y para finalizar, nuevamente hago un llamado al Sentido Común en el diseño de las bases de datos; es poco recomendable que los cubos tiren directamente de la Base de Datos de Producción; por lo general se recomienda crear una nueva Base de Datos de DataWareHouse no mezclar las bebidas en este proceso e implementar algun proceso de ETL para completar los datos de DataWareHouse a partir de los datos de Producción.
Saludos
El Bruno
PD: los animo a sentarse un rato con el cubo de Bedlam; verán que no es tan fácil :P.
Buenas
desde hace un tiempo y hasta el 25 de Marzo, tenemos la oportunidad de ayudar a www.ninemillion.org simplemente utilizando el buscador de Live.com para realizar nuestras búsquedas en la web. (animense a salir del lado oscuro y probar Live.com que me parece un excelente buscador)
Para esto solo tenemos que navegar http://click4thecause.live.com/Search/Charity/Default.aspx y por cada búsqueda que se realize se donará 1 centado de U$S a www.NineMillion.org.
Un post no tecnológico ... pero que ayuda mucho más que un tip sobre WPF.
Saludos
El Bruno
Buenas,
mientras sigo con la duda sobre quien gana si Mickey Mouse se enfrenta al maestro Yoda en un combate de sables laser; también pienso en algunos escenarios donde aprovechar algunas características de Microsoft SQL Server 2005.
Por ejemplo, supongamos que tenemos 1 tabla con varios millones de registros con la siguiente estructura:
y necesitamos agregar 1 nueva columna basada en el cálculo de otras columnas de la tabla (por ejemplo; necesitamos una nueva columna que sume que sume las columnas colX + colY). Una opción simple para resolver este problema es crear una vista que procese el resultado que necesitamos; otra opción es crear una nueva columna en la tabla y luego un trigger que frente a las acciones INSERT o UPDATE sobre un registro actualize el valor de esta columna.
Seguramente hay más alternativas para tener en cuenta; pero una muy interesante es agregar una nueva columna que surja de una función de SQL y que persista los valores de la misma (Computed Column).
Lo primero que debemos hacer es crear la función en nuestra base de datos; este es el script de creación de la misma:
1 -- =============================================
2 -- Author: Bruno Capuano
3 -- Create date: 24-01-2007
4 -- Description: Return param x + param y
5 -- =============================================
6 ALTER function [dbo].[tsql_Add] (@x int, @y int)
7 returns int
8 with schemabinding
9 as
10 begin
11 return @x + @y
12 end
La función simplemente recibe 2 parametros y retorna la suma de los mismos, Luego aqui está la parte interesante podemos modificar la estructura de la tabla para que posea un nuevo campo que procese los datos de esta función. El script de creación de la tabla sería:
1 USE [SampleLabs]
2 GO
3 /****** Object: Table [dbo].[ComputedColumnTable] Script Date: 01/24/2007 14:23:43 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 CREATE TABLE [dbo].[ComputedColumnTable](
9 [colX] [int] NOT NULL,
10 [colY] [int] NOT NULL,
11 [comp_col] AS ([dbo].[tsql_Add]([colX],[colY])),
12 CONSTRAINT [PK_ComputedColumnTable] PRIMARY KEY CLUSTERED
13 (
14 [colX] ASC,
15 [colY] ASC
16 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
17 ) ON [PRIMARY]
Hemos creado una nueva columna comp_col y los valores que alimentarán a la misma se obtendrán de la ejecución de la funcion tsql_Add. Cuando agreguemos algunos valores de prueba podremos ver como esta columna se completa automaticamente tanto cuando agregamos nuevos registros o cuando modificamos los existentes.
Las columnas calculadas ademas pueden ser parte de los índices de una tabla; sin embargo para lograr que los mismos sean indexados hay que modificar un poco la estructura de la misma para que aproveche todas la capacidades de integracion CLR en Microsoft SQL Server 2005. Lo primero que debemos hacer es crear un assembly .Net que contenga la funcionalidad que deseamos; por ejemplo:
1 using System;
2 using Microsoft.SqlServer.Server;
3
4 public class SampleComputedColumn
5 {
6 [SqlFunction(IsDeterministic=true, IsPrecise=true)]
7 public static int tsql_Add(int x, int y)
8 {
9 return x + y;
10 }
11 }
12
Aplicando los atributos IsDeterministics and IsPrecise ya podemos agregar la columnna a los índices de la tabla. Para mas referencia les recomiendo darse una vuelta por:
Saludos
El Bruno
Buenas,
hoy es martes 23 y como siempre no hay mucho que contar; salvo que a nuestros amigos que trabajan con Sharepoint se les hará un poco más facil la vida. Ahi va, directamente los linkazos ..
Overview
The Microsoft Office SharePoint Server 2007 SDK is designed for solution providers, independent software vendors, value-added resellers, and other developers to learn about the new Office SharePoint Server 2007 enterprise application and platform. It features conceptual and "How to" articles, sample code, and programming references.
The download file OfficeServerSDK.exe provided for the SharePoint Server 2007 SDK contains the following:
- Compiled HTML Help files, OSSSDK2007.chm and WSS3sdk.chm, which contain conceptual topics, Class Library and Web Service References for SharePoint Server 2007 and Microsoft Windows SharePoint Services 3.0.
- Code samples that relate to topics in the SDK: Business Data Catalog metadata samples, Custom Single Sign-On Provider, SampleWebService, and Custom Filter Web Parts. The sample projects use Microsoft Visual C# and Microsoft Visual Studio 2005.
- Enterprise Content Management Starter Kit.
Overview
The Windows SharePoint Services 3.0 SDK contains conceptual overviews, programming tasks, and references to guide you in developing solutions based on Windows SharePoint Services as a platform. The SDK includes information about the following technologies:
- Web Part Framework Create, package, and deploy Web Parts on SharePoint sites.
- Server-side object model Work with individual lists and sites or manage an entire Windows SharePoint Services deployment.
- Web services Use default Web services, or create custom Web services, to interact with Windows SharePoint Services from external applications.
- Collaborative Application Markup Language (CAML) Customize the schemas that define lists and sites, define queries for use with members of the object model or Web services, and specify parameters for use with methods in Remote Procedure Call (RPC) protocol.
- Master Pages Specify all of the shared elements of your site in the master page or pages, and add content page-specific elements to content pages.
- Workflows Create workflows that encapsulate business processes to be performed on items in Windows SharePoint Services, and attach those workflows to items in Windows SharePoint Services.
- Custom Field Types Create custom field types that conform to your business data. These custom field types can be based on the base field types already included in Windows SharePoint Services, and can include custom data validation, field rendering, and field property rendering and processing.
- Information Rights Management (IRM) Specify IRM for files located in document libraries and stored as attachments to list items. Create IRM protectors for your own custom file types.
- Document Property Promotion and Demotion Use the built-in XML parser to synchronize the document properties and list column data for XML documents. Create document parsers to do the same for your custom file types.
- Search Use the new Query object model and Query Web service to retrieve search results. Search in Windows SharePoint Services now shares the same SharePoint search technology used by Microsoft Office SharePoint Server 2007.
Saludos
El Bruno
Buenas
hace unos minutos Juan Francisco nos preguntaba como podemos acceder a una Db Access 2007 utilizando Ado.Net. Yo (al igual que él) suponia que el Microsoft Jet Provider, servía para los nuevos archivos accdb de Microsoft Access 2007, pero la cosa ha cambiado un poco.
En realidad ahora el acceso es mucho mas simple utilizando ADO 6.0; ya que la cadena de conexión se simplifica hasta llegar a
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=LOCATION\DB.accdb;Persist Security Info=False"
y podemos ver que es bastante parecida a una conexion clásica OLEDB. (gracias una vez mas www.connectionstrings.com) ADO 6.0 está incluido en Windows Vista y es el equivalente a ADO 2.8; un detalle más completo de la historia y versiones de Ado puede ser consultado aqui.
Para probarlo paso a paso, lo primero que necesitamos es crear una base de datos Access 2007; como estoy a punto de recibir mi WII no tengo mucho tiempo, aprovecho y descargo uno de los templates que ya vienen preinstalados con Access 2007.
Yo he elegido el template para manejo de proyectos y lo he descargado en mi Desktop (ubicación física= C:\Users\brunoc\Desktop\Projects.accdb").
Luego he creado un proyecto en Visual Basic .Net y dentro de un formulario he agregado el siguiente código en el evento Load del mismo:
1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2 Dim cnn As New OleDb.OleDbConnection
3 Dim dt As New DataTable
4 Dim da As New OleDb.OleDbDataAdapter
5 Dim cmd As New OleDb.OleDbCommand
6
7 ' abro la conexion
8 cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\brunoc\Desktop\Projects.accdb;Persist Security Info=False"
9 cnn.Open()
10
11 ' creo el comando y lo lleno con la tabla empleados
12 cmd.Connection = cnn
13 cmd.CommandText = "Employees"
14 cmd.CommandType = CommandType.TableDirect
15 da.SelectCommand = cmd
16 da.Fill(dt)
17
18 ' muestro los resultados en la datagridview
19 Me.DataGridView1.DataSource = dt
20
21 End Sub
No voy a entrar en detalle en lo relacionado a Ado y a Oledb; pero si remarcar que a partir de ahora recordar una cadena de conexión es mucho mas simple :D.
Saludos
El Bruno

Buenas
todavía estoy buscando la excusa para poder comprarme un Cube como el de la foto, pero parece que no tiene nada que ver con Analysis Services 2005; es otro tipo de cubo.
Mientras les dejo otro detallito que tal vez a alguien le ayude a solucionar un error que resulta no ser un error.
El problema surge cuando trabajamos con tablas que tienen un campo con el tipo Tinyint sigue sonando gracioso y pasamos este diseño a nuestro esquema de cubos. Cuando agregamos una tabla a nuestro Data Source View, Visual Studio convierte este tipo de campo a Integer; pero en realidad en las Fact Tables el tipo de dato sigue siendo un Tinyint. Supongo que a partir de aquí se darán cuenta de los problemas que podemos tener en esta situación que sólo son solucionados a través de mucha paciencia y noches de pizzas y cerveza en la oficina frente a Analysis Services 2005.
La solución es simple, crear una nueva columna calculada que que haga el cast de Integer a Tinyint; y utilizar este campo en lugar del campo original en nuestros diseños. Pero como somos bichos raros, lo mas interesante es conocer porque sucede esto: parece ser que el desarrollo interno de Analysis Services 2005 utiliza Microsoft XML Core Services para mantener los diseños y las estructuras de datos internas de los Data Source Views; debido a que Tinyint no es un tipo de dato "estandard" sino que es propietario de Microsoft SQL Server; el diseñador realiza automáticamente la conversión a Integer; y nosotros comenzamos a tener problemas de casting.
Si alguien tiene un problema con Integer y Tinyint ya sabe por donde empezar; y si encuentra algo más; me avisa !!!
Saludos
El Bruno
Buenas
buenas news ... :D
Just Released! Enterprise Library 3.0 January 2007 CTP
The second CTP of Enterprise Library 3.0 is now available to download on our CodePlex community site! Full details on this release are in the included release notes, but here are a few highlights:
- Validation Application Block (also see my previous post on this)
- Near-complete validator library
- Configuration tool support
- ASP.NET integration
- Winforms integration
- Quickstarts and preliminary documentation
- Data Access Application Block
- TransactionScope enlistment
- Logging Application Block
- Rolling Flat File Trace Listener
- WCF integration
- Application Block Software Factory
- Configuration Tool
We've plan to have one more CTP before the final release around late March. More details, including any updates should this plan change, are on the Release Plans page. In the meantime, we hope you enjoy the CTP - and as let us know your thoughs using the Forums and Issue Tracker tools.
And while we're on the topic of new releases, congrats to the Web Client Software Factory team for their 1.0 release to MSDN!
Published Friday, January 19, 2007 5:33 PM by tomholl
Saludos
El Bruno
Buenas,
tengo algunos conocidos que esperan ansiosos algun evento extraordinario; yo soy un poco menos optimista y pongo mis esperanzas en el Service Pack 2 de Microsoft SQL Server 2005. Como en estos días el trabajo fuerte ha sido con Analysis Services 2005; es bueno conocer que nos depara el SP2 para este server.
La información completa relacionada con los cambios del SP2 la podemos encontrar aquí; y para Analysis Services les cuento:
- Microsoft Office 2007 requires the installation of SQL Server 2005 Analysis Services SP2 to support all of its business intelligence features. Features of Microsoft Office 2007 that require SP2 will be disabled when running against an instance of Analysis Services that does not have SP2 installed.
- Espero que esto no signifique que tendremos que instalar ademas del cliente de Office 2007, el cliente de AS SP2; ya que comenzaría a ser mas complicado el deploy.
- The functionality of local and session cubes has been substantially improved.
- Performance and scalability has been improved with respect to subselects, running sum calculations, NUMA optimizations for partition processing, partition query scalability, ragged hierarchies, visual totals, ROLAP dimensions, cell writeback, many-to-many dimensions, drillthrough, semi-additive measures, unary operators and stored procedures.
- Creo que este es uno de los puntos interesantes ya que nos permitirá tener una mejor performance en los calculos online que realizamos con los cubos.
- A warning message now appears when a user-defined hierarchy is not defined as a natural hierarchy.