Conexión de Fusion Operations a Power BI

Descubra cómo obtener datos en Power BI para generar paneles de control

David Andrade avatar
Escrito por David Andrade
Actualizado hace más de una semana

Microsoft Power BI es un software de visualización de datos interactivo que se centra, principalmente, en los datos empresariales. La combinación de esta herramienta con el servicio de la API de Fusion Operations (documentación disponible aquí) permite obtener datos, generar análisis y paneles de control en Power BI.

En este artículo, vamos a seguir los pasos necesarios.

Recuperar los datos de Fusion Operations

1. Abra un nuevo Power BI, haga clic en (1) "Obtener datos" y (2) "Consulta en blanco".

2. En el menú superior, active (1) "Administrar Parámetros" y, a continuación, cree un nuevo parámetro.

Cree los parámetros siguientes:

2.1. apiKey, con el tipo establecido en "Texto" y obligatorio. El valor de este parámetro se puede obtener en el perfil de Autodesk Fusion Operations (1).

2.2. apiSecret, con el tipo establecido en "Texto" y obligatorio. El valor de este parámetro también se puede obtener en el perfil de Autodesk Fusion Operations (2).

2.3. lastNDays, con el tipo establecido en "Número decimal" y obligatorio. Este parámetro determinará cuántos días de datos se recuperarán de Fusion Operations. Tenga en cuenta que cuanto mayor sea este número, más tiempo tardará el panel de control en actualizarse.

2.4. retryAfter, con el tipo establecido en "Número decimal" y obligatorio. Este parámetro se utilizará como búfer (en segundos) entre solicitudes consecutivas que se realizarán a la API de Fusion Operations. Fíjelo en 0,25.

Los cuatro parámetros podrán verse en el lado izquierdo de la pantalla.

3. Active "Nuevo origen" y, a continuación, "Consulta en blanco".

4. En el menú de la izquierda, haga doble clic en la consulta (1), cámbiele el nombre a "getProductionRecords" y haga clic en (2) "Editor avanzado".

5. Copie el texto siguiente y péguelo en el editor avanzado para crear una función en Power BI.

(page as number) =>let    Source = Json.Document(Web.Contents("https://fusionoperations.autodesk.com/api/authorization",        [Headers=                [#"Content-Type"="application/json",                Authorization="Basic " & Binary.ToText(Text.ToBinary(apiKey & ":" & apiSecret), 0),                #"Accept"="*/*"],            Content = Json.FromValue([scopes = {"productions_write"},                random=Number.Random()])        ])),    access_token= Record.ToTable(Source){2}[Value],    endpointUrl = "https://fusionoperations.autodesk.com/api/productions",    startTime =        Number.ToText(Date.Year(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" &        Number.ToText(Date.Month(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" &        Number.ToText(Date.Day(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))),    Origin = Json.Document(Web.Contents(endpointUrl,        [Query=[access_token = access_token,            #"start-time-after" = startTime,            #"worker-name" = "true",            page = Number.ToText(page)]]))in    Origin

6. Repita los pasos 3 y 4, pero cambie el nombre de la nueva función "allProductionRecords". Si, además de registros de producción, está intentando obtener datos a través de la API, cambie el nombre de la consulta y la "endpointUrl" en consecuencia.

7. Repita el paso 5, pero copie y pegue el contenido siguiente.

let    Query = List.Generate(()=>[Result = if List.IsEmpty(getProductionRecords(1)) then null else    getProductionRecords(1), page=1],each [Result]<>null,each [MidRes = Function.InvokeAfter(()=>getProductionRecords([page]+1),        #duration(0,0,0,retryAfter)),    Result = if List.IsEmpty(MidRes) then null else        MidRes,page=[page]+1],each [Result])in    Query

8. Deberías estar todo listo. Fusion Operations ahora debería devolver una lista con los datos.

Procesar los datos

1. Para procesar los datos (que están en formato JSON), haga clic en (1) "A la tabla".

2. Seleccione las opciones siguientes y pulse Aceptar.

3. Haga clic en (1) el icono de flechas divergentes para expandir las listas y (2) "Expandir a filas nuevas".

4. Haga clic de nuevo en (1) el icono de flechas divergentes para expandir los registros, seleccione (2) la información que se procesará en Power BI, elimine (3) la opción "Usar columna original como prefijo" y haga clic en (4) Aceptar.

5. Haga clic en (1) en las flechas divergentes para expandir las columnas que correspondan, lo que dependerá del análisis que se vaya a realizar.

En este caso, expandiremos las columnas (i) operación, (ii) trabajador, (iii) cantidad, (iv) tiempo de trabajo, (v) hora de inicio y (vi) hora de finalización. Para entender mejor lo que significa cada columna, la opción "Usar columna original como prefijo" debería estar activa (punto de verificación 4).

6. Para cada columna pertinente, haga clic (1) en el lado izquierdo del encabezado y defina los datos como el tipo correcto.

En este ejemplo, operation.code y operation.product deben establecerse en texto, worker.number debe establecerse en un número entero, quantity debe establecerse en número decimal, work-time debe establecerse en texto (tendremos que procesarla) y start-time y end-time deben establecerse en fecha, hora o zona horaria.

7. Como se ha mencionado anteriormente, la columna de la duración debe procesarse, ya que Power BI no puede analizar "00H00m16s" en un campo de duración. En su lugar, convertiremos los valores de esta columna a minutos.

7.1. Haga clic en (1) Añadir columna y (2) Columna personalizada.

7.2. En esta columna personalizada, asígnele el nombre (1) tiempo-trabajo-minutos y pegue en el cuadro (2) la fórmula siguiente. Haga clic en (3) Aceptar para enviar la fórmula y crear la columna.

Number.From(Text.Start([#"work-time"],Text.Length([#"work-time"])-7))*60 +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-6,2)) +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-3,2))/60

7.3. Guarde la columna "tiempo de trabajo en minutos" con el tipo "número decimal".

8. También añadiremos dos nuevas columnas de los campos hora de inicio y hora de finalización. Estos campos se denominarán día de inicio y día de finalización. Estas dos columnas serán útiles para el panel de control final.

8.1. Seleccione (1) la columna, haga clic en (2) Fecha y seleccione (3) Solo fecha.

8.2. Cambie el nombre (1) de la columna "fecha de inicio".

8.3. Repita el proceso para la columna de tiempo de finalización. Asigne a la columna final el nombre "fecha de finalización".

9. Seleccione (1) la ficha Inicio y haga clic en (2) Cerrar y aplicar.

Creación de un panel de control sencillo

1. En la pantalla siguiente, seleccione (1) un tipo de panel de control. Seleccionaremos un gráfico de barras agrupado, pero se puede seleccionar cualquier otro. A continuación, expanda (2) productionRecordsList.

2. Arrastre (1) los campos de datos a los campos del panel de control.

3. Pulse (1) para personalizar el panel de control. Estas opciones dependerán del tipo de panel de control seleccionado.

4. Añada más datos, visualizaciones y cree sus paneles de producción personalizados.

Tenga en cuenta que la creación del panel de control anterior requería un número mucho mayor de pasos en comparación con los descritos en este documento (como puede ver en el lado derecho de la imagen, en el menú Datos).

Resolución de problemas de errores

Al pasar los datos de Fusion Operations a Power BI, es posible que se devuelvan algunos errores. Puede encontrar una lista a continuación y cómo solucionarlos:

1. Formula.Firewall: la consulta "allProductionRecords" está accediendo a orígenes de datos que tienen niveles de privacidad que no se pueden utilizar juntos. Vuelva a generar esta combinación de datos.

Para solucionar este error, siga los pasos que se indican a continuación:

1.1 Haga clic en "Configuración del origen de datos".

1.2 Seleccione (1) todas las entradas relacionadas con Fusion Operations y haga clic en (2) "Editar permisos"

1.3. Seleccione el nivel de privacidad "Público". No se olvide de guardar los cambios.

2. Se ha producido un error en la consulta ‘’. DataSource.Error: Web.Contents con la opción Contenido solo se admite cuando se conecta de forma anónima.
Detalles:
DataSourceKind=Web
DataSourcePath=https://fusionoperations.autodesk.com/api/authorization

Para solucionar este error, siga los pasos que se indican a continuación:

2.1. Haga clic en "Configuración del origen de datos".

2.2. Seleccione "https://fusionoperations.autodesk.com/api/authorization" y haga clic en "Editar permisos".

2.3. En "Credenciales", seleccione "Editar…"

2.4. En el menú de la izquierda, seleccione (1) "Anónimo". No se olvide de (2) guardar los cambios.

Si aún tiene dudas, no dude en ponerse en contacto con nosotros mediante nuestra función de chat en vivo.

¿Necesita ayuda? Solicite a un experto en Fusion Operations que se ponga en contacto con usted aquí.

¿Ha quedado contestada tu pregunta?