martes, 28 de diciembre de 2010

Windows Azure DataMarket: el multiuso de los datos

12:45 by Zalakain · 0 comentarios

Últimamente mi trabajo ha derivado hacia temas fuera de lo técnico por lo que lamentablemente tengo poca capacidad para “tocar código” de la que he podido disfrutar hasta ahora, pero aunque este tema me pille un poco más de “refilón” me ha parecido lo suficientemente interesante para conocerlo y, ya puesto, explicarlo.

Microsoft, dentro de su estrategia de servicios para la nube de Internet denominad Windows Azure, ha incluido una plataforma de consumo y publicación de datos a través de OData llamada DataMarket.

image

DataMarket es una plataforma que realmente define en su nombre de qué se trata: “simplemente” es un mercado de datos. Y digo simplemente porque toda la complejidad técnica que esconde detrás de la fachada es admirable: cualquier empresa, institución o incluso persona puede exponer sus datos para consumo y uso por parte de un tercero en cualquier lugar de Internet, de una manera establecida o no, sin que esto suponga carga de proceso para el proveedor y con la posibilidad o no de conseguir beneficios económicos de esta “venta de datos”; pero es que también cualquier empresa, institución o persona puede disponer de manera inmediata de datos digitales de los que puede hacer uso como le plazca (salvo excepciones estipuladas en cada licencia de uso de los datos) en sus propias aplicaciones o mediante aplicaciones de terceros como Microsoft Excel PowerPivot, de manera gratuita o con un coste estipulado por uso (ojo con esto: es preciso comprobar cuál es el coste de los datos que usemos y bajo qué condiciones se nos tarifica por su uso ya que por ejemplo puede haber conjuntos de datos que por cada consulta, y esto incluye las previsualizaciones, nos cobre un acceso… – en general, esto es un consejo recomendable para cualquier uso en Windows Azure: ¡mucho ojo con la tarificación!).

Lo que esto nos proporciona básicamente es el poder acceder a datos y por tanto información que nunca antes hubiéramos podido usar. Esto nos permite pensar aplicaciones nuevas, completar las existentes… en definitiva: innovar, que ya es hora :) Además, al hacer uso de estándares reconocidos como OData, Microsoft esta vez nos ofrece un producto realmente “open” para Internet, que puede emplearse en cualquier plataforma y aplicación. Y, aunque muchos de los conjuntos de datos que se ofrecen en DataMarket son de pago, también hay otros muchos que son gratuitos y que podemos emplear ya, como el que veremos a continuación en el ejemplo que proviene de Naciones Unidas. Por cierto, sería de agradecer que Microsoft añadiera un filtro a su buscador de datos para mostrar sólo los gratuitos… aunque me imagino que eso va contra sus objetivos de ventas ;)

Vamos pues a entrar en arena con un pequeño ejemplo. Lo primero que hemos de hacer es acceder a la página de DataMarket y registrarnos con una Windows Live Id en https://datamarket.azure.com/

Una vez dentro tenemos varias pestañas en la parte superior que nos ayudarán a realizar nuestra labor:

  • Learn: aprender, que nos proporciona información sobre cómo desarrollar aplicaciones para Windows Azure DataMarket . En Microsoft se han tomado mucho esfuerzo en intentar que sepamos fácilmente cómo desarrollar aplicaciones para su plataforma, es algo que se ve en todo el portal de DataMarket y que es de agradecer.

image

  • Browse: para buscar fuentes de datos y la verdad es que hay muchísimas y cada día más! Eso sí, sobre todo norteamericanas pero es de esperar que esto poco a poco vaya mejorando para los habitantes del viejo continente (por ejemplo, empieza a disponerse de muchas fuentes europeas y de Gran Bretaña, a las que seguramente seguirán alemanes y franceses).

image

Aquí podemos buscar la/s fuente/s de datos que nos interese, o simplemente como es mi caso acceder a aquellas de organismos internacionales de carácter público ya que estos suelen ser gratuitos en un 95% de los casos (por ejemplo, los de United Nations).

  • Partners es la zona donde los socios que proporcionan datos en DataMarket se anuncian de manera pública además de donde podemos encontrar la información de los pasos a seguir si tenemos datos que queremos “vender en el mercado”.

image

  • My Data, aquí es donde está el “meollo” de la cuestión, donde encontraremos la lista de las fuentes de datos a las que nos hayamos subscrito, y desde esta lista acceder a la información sobre su uso (licencia, costes…), tipos de consultas que ofrece (fijas o flexibles) y clave de acceso. En mi caso estoy suscrito a una fuente de datos de UNData, la sección de datos de Naciones Unidas, que proporciona información muy interesante a coste 0.

image

  • Help, nuevamente una sección muy completa de ayuda sobre cualquier cosa que necesitemos en DataMarket, o para pedir ayuda si echamos algo de menos.

image

Vale, ahora vamos a ver cómo podemos usar estos datos. No me voy a dedicar a mostrar aquí cómo podemos usarlos mediante herramientas como Excel PowerPivot ya que me alargaría demasiado y eso está muy bien explicado en la propia ayuda de DataMarket. Lo que haré será desarrollar una mini aplicación para mostrar lo fácil que es acceder a estos datos mediante Visual Studio y OData.

Lo primero es volver al tab de “My Data”, donde haciendo drill down en el enlace al conjunto de datos que nos interesa podremos acceder a más información sobre ellos:

image Desde aquí podemos tener acceso tanto a la exploración de una vista previa de los datos (recordar que en este caso esto no tiene coste!) como a los enlaces para ver los datos con otras herramientas como Excel PowerPivot o TableauSoftware. imagePero en enlace que nos interesa es el de abajo “Learn How To Use This Data In Visual Studio“ que nos lleva a una sección en MSDN dedicada al desarrollo de soluciones para Windows Azure DataMarket muy completa.

image

Bien, manos a la obra. Lo primero que tenemos que hacer es averiguar si nuestro conjunto de datos es de tipo Flexible Query o Fixed Query. La diferencia es que los primeros nos permiten pasar una serie de parámetros y/o condiciones para la consulta de manera que los datos que esta devuelva sean flexibles, mientras que en el segundo caso el vendedor establece unos datos fijos que devolverá según una serie de consultas establecidas por él de antemano. Estos datos los podremos luego usar nosotros como queramos, pero siempre serán los que nos vengan dados.

En nuestro caso, si volvemos a la página de información de nuestro conjunto de datos, bajando un poco en la misma vemos que indica que se trata de una Flexible Query (acepta parámetros):

imageEn este caso lo que tenemos que hacer es crear una aplicación en VisualStudio a la que añadiremos una Service Reference para el acceso a los datos en Azure. Vamos a hacer lo más sencillo, una aplicación de consola, ya que una vez conseguido hacer este acceso bien modificar el UI para usar Windows Forms, WPF, Silverlight, ASP.Net o lo que queramos será una cosa simple.

Abrimos VS2010 y creamos un nuevo proyecto .NET Framework 4.0 (obligatoriamente) de tipo Aplicación de consola, que en nuestro caso será en C#, y nombraremos TestDataMarket.

image A continuación, tal y como indica la ayuda de MSDN, para crear una aplicación de tipo Flexible Query, http://msdn.microsoft.com/en-us/library/gg312152.aspx, añadimos la Service root URL a nuestro proyecto, que es la que tenemos en la página de información de nuestro conjunto de datos que hemos visto anteriormente. A continuación en nuestro árbol de proyecto, en References, pinchamos con el botón derecho y seleccionamos “Agregar referencia de servicio”. En el menú que nos sale, en Dirección pegamos la Service Root URL, y pulsamos “Ir” para que detecte los servicios disponibles. image

. Le proporcionamos un nombre con sentido y pulsamos Aceptar.Hecho esto, ya tendremos disponible el conjunto de datos para nuestro uso en la aplicación.image En nuestro código añadimos la referencia con una sentencia using que referencia al espacio de nombres de nuestra aplicación seguido del que hemos dado al servicio referenciado. En mi caso:

using TestDataMarket.UNEnergyData;  // Acceso a datos

A continuación hemos de crear una clase pública que nos proporcionará el acceso a los datos.

        public class GetElectricalData
        {
            Uri serviceUri;
            UnitedNationsEnergyContainer context;
            public GetElectricalData()
            {
                serviceUri =
                    new Uri("https://api.datamarket.azure.com/Data.ashx/UnitedNations/Energy/");
                context = new UnitedNationsEnergyContainer(serviceUri);
                context.Credentials = new NetworkCredential(" ", <CLAVE DE ACCESO>);
            }
            public IList getStats()
            {
                IEnumerable query;
                query = from c in context.Values
                        where c.CountryName == "Spain"
                        select c;
                return query.ToList();
            }
        }
Esta clase la he hecho muy básica, porque sólo quiero comprobar el acceso. Se trata de una query LINQ que devuelve una lista de enumerables que recuperan los valores de nuestra fuente de datos para España. Lo podríamos complicar todo lo que queramos, dentro de los valores permitidos por los datos, tal y como se hace en las consultas SQL de toda la vida. Destacar únicamente que donde indica ; habremos de introducir nuestra Account Key de DataMarket, que podremos obtener en la pantalla “My Data” (o “My Accounts” en la parte superior, es lo mismo), en la sección “Account Keys”.

Finalmente, en nuestro main mostramos los resultados por pantalla para ver que funciona:

        static void Main(string[] args)
        {
            GetElectricalData X = new GetElectricalData();
            IList stats = X.getStats();
            foreach (Values v in stats)
            {
                Console.WriteLine(v.Year + " : " + v.CommodityTransactionName + "  -> " + v.Quantity);
            }
            Console.ReadLine();
        }

Como vemos, este código no tiene nada de particular, por lo que no haré comentarios. Y nuestro resultado será este:

image

Como vemos, acceder a semejante volumen de datos y emplearlos en nuestras aplicaciones no tiene ninguna dificultad gracias a Windows Azure DataMarket. Lo siguiente será que vendamos nuestros datos a través de esta plataforma, rentabilizando por tanto de manera adicional nuestras aplicaciones. Una gran plataforma por parte de Microsoft.

Aprovecho para despedirme de las colaboraciones en el boletín de los Centros de Excelencia Software de Navarra, CESDigital, ya que aunque es posible que estos continúen, mi dedicación a este boletín ya no es prioritaria por tanto dudo mucho que vuelva a publicar nada en él. Eso sí, mi blog ha de seguir adelante.

Y, finalmente, ¡muy feliz 2011 a todos! Ojalá que podamos olvidarnos de este año 2010 en el que sólo han salido ganando los impresentables de siempre y ha traído tan poca alegría a la gente normal. Urte berri on!

sábado, 11 de diciembre de 2010

Prometo…

15:05 by Zalakain · 0 comentarios

Volver a escribir pronto. Ahora estoy en pleno momento “creativo” con mis socios para definir nuestro nuevo intento como Start-UP (en mayúsculas, hay que auto-animarse con esto siempre) que me deja poco tiempo, pero quiero escribir precisamente sobre eso: cómo es la “experiencia”. Tengo fe, creo que estamos en buen camino,

Mientras contaré una cosa buena y altamente recomendable O’Reilly,esa editorial que los que llevamos tantos años como yo metidos en la Informática (también con mayúsculas, la de los “ventas” de turno no, esa es la de mercadillo, de esa mejor no hablar…) hemos aprendido a adorar y a querer como si ese catálogo de animales de sus portadas fueran nuestros, tiene un programa estupendo, el Blogger Review Program: coges uno de sus libros, lo lees y escribes y publicas una crítica. Crítica que puede ( y debe, supongo) ser sincera, no “spanish style” rollito bienqueda, eso no. Así que los que queráis poneros las pilas en inglés IT mirarlo que es muy recomendable.

Agur!