Integración de Speckle con Power BI usando Microsoft Excel
La tecnología BIM ha revolucionado la forma de planificar y ejecutar proyectos, pero muchas empresas aún enfrentan un problema clave: la falta de integración y aprovechamiento de los datos en sistemas de análisis y toma de decisiones.
En este proyecto, implementé un flujo automatizado para gestionar, analizar y visualizar datos BIM provenientes de modelos creados en Revit u otras plataformas. Este proceso optimiza la forma en que los equipos de construcción y diseño interactúan con la información del modelo, integrándola en herramientas comunes para análisis y toma de decisiones.
¿Qué te contaré aquí?
Para este proyecto, implementé un método personalizado que permite integrar y actualizar datos de modelos BIM en Power BI Service utilizando la API de Speckle. Esto fue necesario debido a que el conector oficial de Speckle aún no está autorizado por Microsoft, lo que impide su uso directo en entornos de actualización automática. Mediante este enfoque, logré mantener los datos actualizados en Power BI Service, asegurando la continuidad y precisión del análisis sin depender de soluciones manuales o limitaciones del conector.
Desafío
Los modelos BIM suelen ser ricos en información, pero esa riqueza se queda atrapada en herramientas especializadas como Revit. Esto dificulta el acceso para otros equipos, como finanzas o planificación, y limita su capacidad para visualizar datos clave en tiempo real.
Tecnologías
- Revit: Para modelado y exportación de datos.
- Power BI: Para análisis y visualización.
- Excel: Para almacenar y transformar datos.
- Speckle Viewer: Para integrar la visualización 3D.
Flujo de datos
Centralización de Datos BIM
Los modelos BIM se exportaron y centralizaron en Speckle, una plataforma que permite la gestión colaborativa de datos. Speckle actúa como un repositorio central donde los datos se almacenan en formatos estructurados, asegurando su accesibilidad y trazabilidad.
Consulta de Datos con GraphQL API
Utilizando la API GraphQL de Speckle, diseñé consultas personalizadas para extraer información específica de los modelos BIM. Esto permitió filtrar atributos clave según los requerimientos del proyecto, optimizando el acceso a datos relevantes.
Transformación en Formatos Tabulares
La información extraída se procesó en Excel y otros formatos tabulares para su organización y análisis. Este paso facilitó cálculos detallados, preparación de datos y generación de reportes.
Aquí se definen las variables principales para interactuar con la API de Speckle.
let
// Variables para la API de Speckle
url = "https://speckle.xyz/graphql", // URL del endpoint de la API
objectId = "objectId", // ID del objeto raíz a consultar
depth = 5, // Niveles de profundidad de los datos a traer
url
: Dirección de la API GraphQL de Speckle.objectId
: Identificador único del modelo o elemento BIM.depth
: Define cuántos niveles jerárquicos incluir al traer datos (ideal para manejar modelos complejos).
Se crea una consulta GraphQL que define los datos a obtener.
graphqlQuery = Text.ToBinary("{""query"": ""query Select($objectId: String!, $depth: Int!, $projectId: String!) { project(id: $projectId) { object(id: $objectId) { children(depth: $depth, limit: 30000) { totalCount objects { data } } } } }"",
""variables"": {
""projectId"": """ & streamId & """,
""objectId"": """ & objectId & """,
""depth"": " & Number.ToText(depth) & "
}
}"),
- GraphQL Query: Define los parámetros
objectId
ydepth
para obtener la jerarquía y atributos de los objetos. - Variables dinámicas:
streamId
,objectId
ydepth
se ajustan según el modelo o análisis requerido.
Realiza una consulta HTTP para obtener los datos en formato JSON.
response = Json.Document(Web.Contents(url, options)),
Web.Contents
: Envía una solicitud HTTP a la API con los encabezados y la consulta.Json.Document
: Procesa la respuesta y la convierte a un formato manipulable en Power Query.
Se convierte el JSON recibido en una tabla y se expanden sus campos.
rawData = response[#"data"][project][object][children][objects],
#"Convertida en tabla" = Table.FromList(rawData, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Se expandió Column1" = Table.ExpandRecordColumn(#"Convertida en tabla", "Column1", {"data"}, {"data"}),
Table.FromList
: Convierte el JSON en una tabla de Power Query.Table.ExpandRecordColumn
: Expande la columnadata
para exponer los atributos del modelo BIM.
Se agregan columnas adicionales para enriquecer los datos.
#"Personalizada agregada" = Table.AddColumn(#"Se expandió Column1", "Model URL", each "https://app.speckle.systems/streams/" & streamId),
#"Personalizada agregada1" = Table.AddColumn(#"Personalizada agregada", "Object Id", each [data][id]),
Table.AddColumn
: Agrega columnas con metadatos útiles, como el enlace al modelo y el identificador de cada objeto.
Organiza las columnas para facilitar el análisis en Power BI.
#"Columnas Reordenadas" = Table.ReorderColumns(#"Personalizada agregada2", {"Model URL", "Version Object Id", "Object Id", "data"})
in
#"Columnas Reordenadas"
- Reordenamiento: Las columnas clave se presentan al inicio para claridad.
- Resultado Final: La tabla está lista para ser utilizada en Power BI o análisis adicionales.
Cómo Usar Este Código
- Configura tus credenciales de Speckle, como el
streamId
ytoken
. - Ajusta el
objectId
ydepth
según el modelo que estés analizando. - Copia el código en el editor de Power Query y conéctalo a tu modelo de Power BI.
Visualización en Power BI
Los datos tabulares se integraron en Power BI, donde se desarrollaron dashboards dinámicos y visualizaciones interactivas. Esto permitió a los equipos obtener insights clave sobre el progreso del proyecto, costos y cumplimiento de objetivos.
Demo y Resultados
- Reducción de tiempos en la consulta y procesamiento de datos BIM.
- Mejora en la colaboración entre disciplinas mediante una centralización efectiva de la información.
- Visualizaciones intuitivas que facilitaron la toma de decisiones basada en datos.
Este proyecto demuestra cómo la integración de tecnologías modernas puede transformar procesos en la industria de la construcción, aportando eficiencia y claridad en la gestión de datos complejos.
Una de las principales limitaciones al trabajar con modelos BIM es la dificultad de relacionar datos visuales con información tabular de planificación o costos. Esto me llevó a buscar herramientas que permitieran una integración dinámica y visualmente clara.