Cómo conectar Power BI directamente con Business Central sin utilizar Power Query
Power BI dispone de un conector estándar que permite acceder directamente a los datos de Business Central, sin necesidad de crear manualmente consultas en Power Query ni configurar servicios web.
En otros artículos ya vimos cómo realizar conexiones similares desde Excel, tanto utilizando una cuenta de usuario como mediante Client ID y Client Secret. En este caso veremos una alternativa bastante más sencilla desde Power BI Desktop.
Este conector permite navegar por los diferentes entornos y empresas de Business Central, y consultar tanto las API estándar de Microsoft como las API personalizadas que tengamos desarrolladas. Está bastante bien si lo que buscas es crear un cuadro de mando rápido y sencillo. Lo único que te hará falta será una licencia de Power BI y un usuario de BC con permisos a las tablas que quieres conectarte.
Conectar Power BI con Business Central
Desde Power BI Desktop, seleccionamos Obtener datos → Más.

En el buscador escribimos “Business” y seleccionamos el conector Dynamics 365 Business Central.

La primera vez que nos conectemos tendremos que autenticarnos con una cuenta del tenant del cliente que tenga acceso a Business Central. Es importante que ese usuario disponga de los permisos necesarios para consultar las empresas y tablas que queremos utilizar.
Una vez autenticados, aparecerán todos los entornos disponibles para ese usuario y, dentro de cada entorno, las empresas a las que tiene acceso.

API estándar de Business Central
Dentro de cada empresa encontramos el apartado API estándar v2.0, donde Microsoft publica diferentes entidades para consultar información de Business Central.
Por ejemplo, podemos acceder directamente a clientes, proveedores, productos, cuentas contables o movimientos, entre otros.

Simplemente seleccionamos la entidad que necesitamos y pulsamos en Cargar para incorporar sus datos al modelo de Power BI.
API personalizadas
No obstante, no estamos limitados a las API estándar de Microsoft. También podemos desarrollar nuestras propias API en AL para exponer cualquier información que necesitemos.
Estas aparecerán en el apartado API avanzadas, agrupadas según la configuración que hayamos definido en el desarrollo.
Por ejemplo, en este caso tenemos una API personalizada de divisas dentro del grupo asmSoft/powerBi/v2.0.

El desarrollo es bastante sencillo. Este sería un ejemplo simplificado de la API de divisas:
page 50032 "Asm Currency API"
{
PageType = API;
Caption = 'Currency API';
APIPublisher = 'asmSoft';
APIGroup = 'powerBi';
APIVersion = 'v2.0';
EntityName = 'currency';
EntitySetName = 'currencies';
SourceTable = Currency;
DelayedInsert = true;
Editable = false;
DataAccessIntent = ReadOnly;
layout
{
area(Content)
{
repeater(Control1)
{
field(code; Rec.Code) { }
field(description; Rec.Description) { }
field(isoCode; Rec."ISO Code") { }
field(symbol; Rec.Symbol) { }
}
}
}
trigger OnOpenPage()
var
lLanguage: Codeunit Language;
begin
GlobalLanguage := lLanguage.GetLanguageId('ESP');
end;
}
Aquí hay un pequeño truco que solemos utilizar cuando desarrollamos API para Power BI:
GlobalLanguage := lLanguage.GetLanguageId('ESP');
Esta instrucción permite forzar el idioma español durante la ejecución de la API, independientemente del idioma que tenga configurado el usuario que realiza la conexión.
Resulta útil cuando trabajamos con textos o valores traducibles que Business Central devuelve en función del idioma de la sesión. Eso sí, no traduce los textos que ya están almacenados en las tablas. Lo solemos utilizar para los típicos campos de “Document Type”, para que nos aparezcan los valores en español (Factura, Abono), en lugar de en inglés (Invoice, Credit Memo).
La principal ventaja de usar estas conexiones es que no tenemos que preparar manualmente la conexión. Aunque internamente Power BI sigue utilizando Power Query, podemos seleccionar directamente las entidades de Business Central que queremos consumir, tanto estándar como personalizadas.
Una idea para seguir pensando.
Explorar otras lecturas →