Project Server y Power Query: ¿Cómo cruzar datos del sitio del proyecto con los campos empresariales?

Desde Project Server 2010, Microsoft ha orientado el Reporting hacia Excel. Primero con Excel Services que permite visualizar los informes cargados en el propio sistema, siguiendo con herramientas como PowerPivot, que mejora la generación de KPIs y gráficos. Para la versión 2013 se ha profundizado en la facilidad para que el usuario de negocio pueda generar consultas más complejas y ricas mediante Power Query. Sin entrar en demasiados detalles, podemos afirmar que es una tecnología bastante potente que permite cohesionar información de diferentes orígenes de datos dentro de una misma consulta. Y es dicha característica la que nos servirá para el propósito de este post.

Imaginemos que tenemos una plantilla de sitio de proyecto con una o varias bibliotecas o listas personalizadas en base a nuestro negocio. ¿Cómo hacemos para realizar un informe en el que se muestre por cada uno de los registros información de los campos personalizados de los proyectos junto con información de los documentos existentes en dichas bibliotecas? Pues sólo se puede hacer con Power Query.

A continuación, explicaremos cómo generar una función que obtenga los datos de una biblioteca concreta del sitio de proyecto y consolidar dicha información con los “Enterprise Custom Fields” del mismo.

Para empezar, crearemos una conexión a una fuente de datos oData que apunte a la librería o lista de la que se desee obtener la información de un sitio de proyecto en concreto. En nuestro caso, la librería “Documentos”.

1ProjectReport

Tras seleccionar como orígen de datos una fuente oData, se debe introducir la ruta a la biblioteca o lista de la que se desee obtener la información de un sitio de proyecto en concreto, para tener algo de lo que partir.

11ProjectReport

Una vez realizada la consulta (en nuestro ejemplo la hemos llamado “DocumentosDelProyecto”), editaremos la misma para poder convertirla en una función que devuelva los datos de dicha biblioteca para cualquier proyecto cuya Url se le pase como parámetro.

4ProjectReport

En las opciones que tendremos en la cinta al editar la conexión se debe seleccionar “Editor avanzado” tal y como se aprecia en la figura:

5ProjectReport

Tras esto, se mostrará un cuadro de texto con la configuración de la conexión. Por ahora, apuntará directamente a la biblioteca “Documentos” del sitio de muestra que hayamos seleccionado:

let
Source = OData.Feed(“PWASiteCollection/ProjectDocumentSite/_vti_bin/listdata.sv/Documents”)
in
Source

Para convertirlo en una función, la modificaremos para recibir el parámetro “siteurl”, en el que se indicará la ruta del sitio documental de un proyecto. Se sustituirá en la url que se carga en el Feed la parte correspondiente a la url del sitio de muestra por este nuevo parámetro:

let
Documentos = (siteurl as text) as table =>
let
Source = OData.Feed(Value.FromText(siteurl&”/_vti_bin/listdata.svc/Documents”))
in
Source
in
Documentos

Finalmente, para probar que todo funciona correctamente, pulsaremos el botón “Invocar función” de la cinta de opciones. Este nos mostrará un cuadro de diálogo en el que indicar la Url completa de un sitio de proyecto sobre el que realizar la llamada. Se puede utilizar el mismo sitio utilizado para generar la función o cualquier otro que contenga documentos:

6InvocacionFuncion

Tras pulsar el botón “Aceptar”, se cargarán los documentos de la biblioteca para el sitio de proyecto indicado:

7ProjectReport

Finalmente, se pulsa el botón “Guardar y cargar” para dejar el editor y volver al fichero de Excel en el que se está trabajando, Ahora aparecerá en el panel de PowerQuery la nueva función:

18Función

Ahora necesitamos relacionar cada uno de los Proyectos Empresariales de Project Server con su documentación, correspondiente a la biblioteca “Documentos” del sitio de Sharepoint del proyecto. Y en eso radica la potencia de Power Query, que permite enlazar orígenes de datos diversos y consolidarlos conjuntamente.

Para obtener los proyectos se creará una conexión de fuente oData que apunte al servicio de Project del sitio PWA dónde estemos trabajando. La url tendrá la siguiente estructura: http://ColecciónDeSitiosDePWA/_api/projectdata.

11ProjectReport

A continuación, se mostrarán todos los servicios disponibles para Project Server.  En este caso se debe seleccionar “Projects”. En la parte inferior existen varios botones. Si pulsamos en el correspondiente a “Cargar” se mostrará una ventana con opciones adicionales. Se debe marcar “Crear solo conexión” y marcar el checkbox “Agregar estos datos al Modelo de datos”:

12ProjectReport

Para poder mostrar los documentos cargados en la biblioteca se debe añadir una columna personalizada, por lo que se debe editar la conexión que se acaba de crear y pulsar en el botón “Agregar columna personalizada” que se mostrará en la cinta de opciones (Ribbon):

13ProjectReport

A continuación, se proporcionará un nombre a la nueva columna (en el ejemplo, ProjectDocuments) y, en el cuadro de texto en el que introducir la fórmula para la columna, se realizará la llamada a la función, pasándole como parámetro la url interna del sitio de proyecto (que aparece como columna disponible en el listado de la derecha):

14ProjectReport

La llamada a la función quedaría de esta forma:

=DocumentosDelProyecto([ProjectWorkSpaceInternalUrl])

Tras pulsar en el botón “Aceptar” se añadirá la nueva columna a las ya disponibles para los proyectos. Como se podrá comprobar, el contenido de dicha columna no son los documentos directamente si no un objeto de tipo “Tabla” que contendrá esta información. Para poder cargar los datos de los documentos directamente en el grid de los proyectos, simplemente hay que expandir la columna “ProjectDocuments” para mostrar los campos que se deseen de la librería “Documentos”. Para ello, se debe pulsar en el icono al lado del nombre de la columna “ProjectDocuments” en el encabezado del grid. Se mostrará un menú adicional dónde seleccionar las columnas de la biblioteca a añadir:

15ProjectReport

En la parte inferior se puede indicar si se usa el nombre de la columna como prefijo y se añade luego el de la columna seleccionada o sólo se carga el nombre de las columnas seleccionadas. Se deja marcada la casilla para que el formato sea “ProjectDocuments.ColumnaX”:

16ProjectReport

Finalmente, tras pulsar el botón “Aceptar” se mostrarán las columnas seleccionadas junto con los datos del proyecto. Ahora existirán tantas filas por cada proyecto como documentos tengan estos en la biblioteca.

17ProjectReport

A partir de aquí, la información se puede tratar como sea necesario: contar documentos de un mismo tipo por proyecto, ver si falta algún tipo de documento por subir a la librería…lo que se necesite.

Como se ha podido ver, ahora con Power Query es posible realizar de forma sencilla informes que consoliden la información del proyecto con la generada en el sitio documental del mismo, evitándose (en la mayoría de las ocasiones) tener que recurrir a Jobs (es decir, a desarrollos) que obtengan y aglutinen la información de diferentes orígenes de datos. De esta forma, un usuario de negocio con cierta habilidad con Excel es capaz de generar los informes que necesite para el seguimiento de los proyectos.

Anuncios