[PowerBi] Obtener datos de Microsoft Forms

Hola comunidad! Soy Facundo Montenegro, Colaboro como BI & Analytics Consultant en la empresa Pi Data Strategy & Consulting y me especializo en el uso de Power BI.

Hace un tiempo me tocó trabajar con un origen de datos de Microsoft Forms. El mismo era un cuestionario al cual debía conectarme con Power BI para desarrollar un modelo de BI. Si bien la conexión fue relativamente sencilla y pude desarrollar el modelo correctamente, al momento de publicarlo no fue posible configurar el refresco. Después de investigar en distintos foros, comunidades y hasta contactar al equipo de Microsoft llegué a la conclusión que existe solamente una forma de hacerlo correctamente hasta el momento y es sencilla.

En este post les voy a enseñar como conectar correctamente un origen de datos de Microsoft Forms a Power BI y no padecer a la hora de configurar el refresco automático. Dicho de otra forma "Como conectar correctamente tu origen de Microsoft Forms a Power Bi y no morir en el refresco".

Generar el archivo Excel Desde Microsoft Forms

image

Supongamos que estamos en la Home de Microsoft Forms y tenemos nuestro cuestionario al cual queremos conectarnos desde Power BI. Hacemos clic y abrimos el mismo.

image

Veamos que en la solapa "Responses" Podemos acceder a un botón que dice "Open in Excel"

El mismo nos permite descargar el archivo Excel y conectarnos a Power BI aunque, si bien esto puede funcionar si necesitamos extraer información una sola vez, no sería el método efectivo si necesitamos que esta información se vaya actualizando cada vez que ya una nueva respuesta en el cuestionario.

image

Por lo anterior, debemos volver nuevamente al Home de nuestro cuestionario, hacemos clic en el botón que tiene los tres puntos suspensivos y seleccionamos la opción "Move", esto nos desplegara un grupo de trabajo dónde vamos a alojar nuestro cuestionario.

image

Seleccionamos el grupo en el cual queremos que se genere el archivo Excel del cuestionario y hacemos clic en "Mover".

image

Notamos que ahora nuestro formulario está en un grupo colaborativo de Sharepoint o OneDrive, hacemos clic sobre ese grupo.

image

Podemos ver que nuestro formulario esta en este grupo pero una vez que lo abrimos vamos a notar algo diferente…

image

Si hacemos clic en "Abrir en Excel" ahora, se creará un archivo que estará disponible online en el directorio del grupo para poder colaborar en grupo. ¡Pum! Este es el gran diferencial con respecto a la forma anterior de abrirlo de manera local ya que, al poder conectarme de manera online, este cuestionario podrá actualizarse a medida que se carguen respuestas.

Hay alternativas para conectarse? Sí. Pero, Son efectivas a la hora de configurar el refresco? No, y lo podemos ver con un ejemplo.

image

Una posibilidad es tomar el Id del formulario e invocarlo en una blank query en Power Query como la siguiente:

= (idFormulario as text, idminimo as text,  idmaximo as text)=>

let
   Source = Excel.Workbook(Web.Contents("https://forms.office.com/formapi/",[RelativePath="DownloadExcelFile.ashx?formid="&idFormulario&"&minResponseId="&idminimo&"&maxResponseId="&idmaximo])),
   Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data]
in
Table1_Table

IdFormulario será nuestro formulario, idminimo es un parámetro de mínimo de respuestas y idmaximo es un parámetro de máximo de respuestas. Y la pregunta es, funciona? Sí! Podremos conectarnos correctamente a nuestro origen de datos y desarrollar nuestro reporte pero, cuando lo publiquemos e intentemos configurar el refresco en Power BI Service sucederá algo como esto…

image

Ni habiendo separado en parámetros nuestra función puede autenticar la API de Forms con el protocolo OAuth2 de Microsoft, sin duda es un problema y no lo sabremos hasta publicar nuestro reporte por lo que, se recomienda utilizar la primera forma.

Conectar Microsoft Forms a Power BI

Finalmente, y luego de haber elegido el camino sencillo, podemos conectar nuestro Cuestionario de Microsoft Forms en Power BI. Cómo? Muy sencillo! Ya fue explicado antes en otro post de ladataweb pero de todas formas vamos a repasarlo.

Abrimos el Excel que creamos desde el cuestionario de Microsoft Forms

image

Haremos clic en "Archivo" -> "Información" -> "Abrir en la aplicación de escritorio". De este modo, lograremos abrir Excel en nuestra app de escritorio.

image

Una vez dentro del archivo en la app local, haremos clic en "File" -> "Info" -> "Copy path" y luego cerraremos este archivo local.

image

Luego, abrimos nuestro Power BI e iremos "Get Data" y seleccionamos  "More" para obtener más orígenes. Luego elegimos el tipo "Web"

image
image

Finalmente, pegamos la ruta copiada del archivo Excel de escritorio borrando la parte "?web=1"  y hacemos clic en "Ok" , con esto podemos autenticar con nuestra organización y obtener el origen de datos.

¡Listo! Con esto ya podemos empezar a desarrollar nuestro modelo sin correr riesgos en la configuración del refresco y teniendo plena seguridad que el mismo será actualizado correctamente en Power BI Service.

Escrito por Facundo Montenegro