2019
Netcoreconf
Power BI para
Desarrolladores
Antonio Soto
CEO - SolidQ
@antoniosql
Power BI para Desarrolladores
Sponsors
#netcoreconf
Introducción
asoto@solidq.com https://www.linkedin.com/in/antoniosql
@antoniosql
+34.637.505.941
Soy Antonio Soto, llevo más de 20 años dedicado al mundo del
análisis de datos, desde los primeros sistemas Data Warehouse,
hasta el desarrollo de soluciones integradas con Inteligencia
Artificial de hoy en día, pasando por todos los puntos
intermedios. Me he tocado viajar por el mundo diseñando
sistemas y soluciones enfocadas a la toma de decisiones en
todos los sectores y en empresas de diferentes tamaños.
#netcoreconf
Power BI para Desarrolladores
Introducción Embeber
contenido
Extensibilidad Paneles en
Tiempo-Real
#netcoreconf
Introducción a Power BI
#netcoreconf
Ecosistema Power BI
#netcoreconf
Power BI Report Server
On-premises
Publish
#netcoreconf
El flujo de diseño
Obtener Datos
Analizar
Visualizar
Publicar
Colaborar
#netcoreconf
El proceso
(Prep data for Data Model)
Close &
Apply
#netcoreconf
¿Qué podemos personalizar?
Conexión con
Origen
•Basado en Script: R y Python
•Data Connector SDK (M)
•Power Query SDK
Transformaciones
en las consultas
•Lenguaje M
•Scripts R y Python
Modelo de Datos
•DAX
Visualización
•Scripts R y Python
•Power BI Custom Visuals API
Obtener Datos
Analizar
Visualizar
#netcoreconf
Power BI
Automatización
• Power BI API REST
Embeber
• SDKs
• Power BI for .NET
• Power BI JavaScript
• Power BI Report Authoring
Publicar
Colaborar
#netcoreconf
Resumiendo
Como desarrolladores Podemos:
• Embeber e integrar contenido Power BI en nuestras aplicaciones
• Desarrollar visualizaciones personalizadas
• Desarrollar conectores de datos personalizados
• Desarrollar Paneles de tiempo-real
Embeber Contenido
#netcoreconf
Embebiendo Contenido Power BI
• ¿Qué podemos embeber?
• Paneles completos o Ventanas específicas
• Informes completos (ver y editar) o
visualizaciones completas
• Ventanas
• La Experiencia de Preguntas y Respuestas
• ¿Dónde podemos embeberlo?
• En cualquier aplicación
• Está basado en estándares web: HTML5 y
JavaScript
• ¿Cómo lo embebemos?
• Power BI JavaScript API
• SDK: C#, JavaScript y TypeScript
#netcoreconf
Escenarios soportados
• Autenticamos al usuario con las identidades de la aplicación
• Limitamos lo que el usuario puede ver a través de roles
• Aplicaciones Externas
• La aplicación autentica al usuario
• El usuario no necesita una cuenta de Power BI
• La Aplicación controla los datos basándose en la identidad efectiva pasada al
servicio
• Aplicaciones internas
• Embebemos recursos Power BI en un interfaz personalizado
• Soporta SSO
• El servicio de Power BI determina la visibilidad de datos basándose en las
asociaciones a roles del usuario.
#netcoreconf
Flujo de Autenticación
#netcoreconf
Metodología de Desarrollo
Crear el Espacio
de Trabajo de la
Aplicación
•Necesitamos un
usuario Power BI
PRO
•Cuenta Master App
Añadir Contenido
Power BI
•Podemos embeber
cualquier contenido
•El API permite
enumerar recursos
•Conjuntos de datos,
paneles y ventanas
se identifican por su
GUID
Registrar la
Aplicación
•Necesitamos una
aplicación Azure AD
•Dos herramientas
•Portal Azure
•Onboarding
Embed Tool
Importar
Paquetes
•Microsoft.Identity
Model.Clients.Activ
eDirectory
•Microsoft.PowerBI.
Api
•Microsoft.PowerBI.
JavaScript
Agregar las
configuraciones
•Endpoints del
Servicio de Power
BI
•ID de Aplicación
•ID de Espacio de
Trabajo
•Credenciales de
Master Account
Desarrollar el
interfaz
•Elemento de script
para la librería de
cliente
•Elmento div para
embeber
•Elemento de script
para ejecutar la
lógica
Mejorar el
Interfaz
•Interacciones de
usuario soportadas
de forma nativa
•Pueden disparar
eventos
•Regenerar el token
#netcoreconf
Flujo de Análisis en contexto
El Usuario hace
clic en el
interfaz de la
aplicación para
realizar una
acción
La aplicación
reacciona a la
selección de
datos y muestra
opciones
adicionales
El Usuario
interactúa con
los datos
La aplicación
muestra un
informe filtrado
a un ítem
específico
El usuario
navega por la
aplicación
#netcoreconf
Demo: Embebiendo Contenido
1. Registramos la aplicación
1. Onboarding Embed Tool https://app.powerbi.com/embedsetup
2. Descargamos el Ejemplo
3. Navegamos y revisamos código
4. Power BI Embedded Playground https://microsoft.github.io/PowerBI-
JavaScript/demo/v2-demo/index.html
Extensibilidad
#netcoreconf
Extensibilidad
1. Visualizaciones personalizadas
2. Conectores de Datos personalizados
#netcoreconf
Visualizaciones Personalizadas
• Se renderizan en un iFrame
• El iFrame es sandboxed
• No es posible acceder
• Estilos Power BI
• Fuentes Power BI
• APIs no documentada
• Cookies o almacenamiento local
• Entorno de Desarrollo
• Node.js
• Paquete Power BI Custom Visual Tool (pbiviz)
• JavaScript D3
• Opciones de despliegue
• Archivos personalizados para importar
• Publicación a nivel Organización
• Publicación en el Marketplace
#netcoreconf
Ciclo de desarrollo
Creation Coding Testing Packaging Submission
Custom Visual Tool
PowerBI.com
Developer End user
Optional
#netcoreconf
Conectores Personalizados
• Power Query SDK
• Casos de Uso
• Crear una vista más amigable de un API REST
• Propocionar un branding personalizado para un origen ya soportado (OData, ODBC,…)
• Implementar un flujo de autenticación OAuth v2 para un servicio SaaS
• Exponer una vista filtrada de datos para mejorar usabilidad
• Habilitar DirectQuery para un origen de datos vía un driver ODBC
#netcoreconf
Conector sobre un driver ODBC
Data Source
#netcoreconf
Conector sobre un servicio OData
OData
Service
#netcoreconf
Conector basado en M para cualquier origen SaaS
SaaS
Paneles en Tiempo Real
#netcoreconf
Datos en Tiempo Real
• Las Ventanas de los Paneles muestran datos
actualizados si el conjunto de dato subyacente es:
• Push
• Streaming
• PubNub
• Si queremos embeberlo debemos de embeber el
panel completo
#netcoreconf
Power BI REST API
Datasets
Tables
Power BI
workspace
Rows
Jerarquía del Modelo de Objetos
Operaciones Comunes
List all datasets
Create a dataset
List all tables
Update an existing table schema
Add rows to a table in a dataset
Clear the rows in a table
List all groups
List all dashboards
List all tiles
List all reports
#netcoreconf
Enviando datos a través del Power BI REST API
• Cuando creamos un Conjunto de Datos, podemos especificar la propiedad
defaultMode
• Push
• Streaming
• PushStreaming
• Los paneles con ventanas de estos conjuntos de datos se actualizan en tiempo
real
#netcoreconf
Demo: Paneles en Tiempo Real
1. Navegando el modelo de objetos
2. Inyectamos datos a través del Power BI REST API
Sponsors
Más información:
info@netcoreconf.com
@Netcoreconf
Visítanos en:
netcoreconf.com

Power BI para desarrolladores netcoreconf

  • 1.
  • 2.
    Power BI paraDesarrolladores
  • 3.
  • 4.
    #netcoreconf Introducción asoto@solidq.com https://www.linkedin.com/in/antoniosql @antoniosql +34.637.505.941 Soy AntonioSoto, llevo más de 20 años dedicado al mundo del análisis de datos, desde los primeros sistemas Data Warehouse, hasta el desarrollo de soluciones integradas con Inteligencia Artificial de hoy en día, pasando por todos los puntos intermedios. Me he tocado viajar por el mundo diseñando sistemas y soluciones enfocadas a la toma de decisiones en todos los sectores y en empresas de diferentes tamaños.
  • 5.
    #netcoreconf Power BI paraDesarrolladores Introducción Embeber contenido Extensibilidad Paneles en Tiempo-Real
  • 6.
  • 7.
  • 8.
    #netcoreconf Power BI ReportServer On-premises Publish
  • 9.
    #netcoreconf El flujo dediseño Obtener Datos Analizar Visualizar Publicar Colaborar
  • 10.
    #netcoreconf El proceso (Prep datafor Data Model) Close & Apply
  • 11.
    #netcoreconf ¿Qué podemos personalizar? Conexióncon Origen •Basado en Script: R y Python •Data Connector SDK (M) •Power Query SDK Transformaciones en las consultas •Lenguaje M •Scripts R y Python Modelo de Datos •DAX Visualización •Scripts R y Python •Power BI Custom Visuals API Obtener Datos Analizar Visualizar
  • 12.
    #netcoreconf Power BI Automatización • PowerBI API REST Embeber • SDKs • Power BI for .NET • Power BI JavaScript • Power BI Report Authoring Publicar Colaborar
  • 13.
    #netcoreconf Resumiendo Como desarrolladores Podemos: •Embeber e integrar contenido Power BI en nuestras aplicaciones • Desarrollar visualizaciones personalizadas • Desarrollar conectores de datos personalizados • Desarrollar Paneles de tiempo-real
  • 14.
  • 15.
    #netcoreconf Embebiendo Contenido PowerBI • ¿Qué podemos embeber? • Paneles completos o Ventanas específicas • Informes completos (ver y editar) o visualizaciones completas • Ventanas • La Experiencia de Preguntas y Respuestas • ¿Dónde podemos embeberlo? • En cualquier aplicación • Está basado en estándares web: HTML5 y JavaScript • ¿Cómo lo embebemos? • Power BI JavaScript API • SDK: C#, JavaScript y TypeScript
  • 16.
    #netcoreconf Escenarios soportados • Autenticamosal usuario con las identidades de la aplicación • Limitamos lo que el usuario puede ver a través de roles • Aplicaciones Externas • La aplicación autentica al usuario • El usuario no necesita una cuenta de Power BI • La Aplicación controla los datos basándose en la identidad efectiva pasada al servicio • Aplicaciones internas • Embebemos recursos Power BI en un interfaz personalizado • Soporta SSO • El servicio de Power BI determina la visibilidad de datos basándose en las asociaciones a roles del usuario.
  • 17.
  • 18.
    #netcoreconf Metodología de Desarrollo Crearel Espacio de Trabajo de la Aplicación •Necesitamos un usuario Power BI PRO •Cuenta Master App Añadir Contenido Power BI •Podemos embeber cualquier contenido •El API permite enumerar recursos •Conjuntos de datos, paneles y ventanas se identifican por su GUID Registrar la Aplicación •Necesitamos una aplicación Azure AD •Dos herramientas •Portal Azure •Onboarding Embed Tool Importar Paquetes •Microsoft.Identity Model.Clients.Activ eDirectory •Microsoft.PowerBI. Api •Microsoft.PowerBI. JavaScript Agregar las configuraciones •Endpoints del Servicio de Power BI •ID de Aplicación •ID de Espacio de Trabajo •Credenciales de Master Account Desarrollar el interfaz •Elemento de script para la librería de cliente •Elmento div para embeber •Elemento de script para ejecutar la lógica Mejorar el Interfaz •Interacciones de usuario soportadas de forma nativa •Pueden disparar eventos •Regenerar el token
  • 19.
    #netcoreconf Flujo de Análisisen contexto El Usuario hace clic en el interfaz de la aplicación para realizar una acción La aplicación reacciona a la selección de datos y muestra opciones adicionales El Usuario interactúa con los datos La aplicación muestra un informe filtrado a un ítem específico El usuario navega por la aplicación
  • 20.
    #netcoreconf Demo: Embebiendo Contenido 1.Registramos la aplicación 1. Onboarding Embed Tool https://app.powerbi.com/embedsetup 2. Descargamos el Ejemplo 3. Navegamos y revisamos código 4. Power BI Embedded Playground https://microsoft.github.io/PowerBI- JavaScript/demo/v2-demo/index.html
  • 21.
  • 22.
  • 23.
    #netcoreconf Visualizaciones Personalizadas • Serenderizan en un iFrame • El iFrame es sandboxed • No es posible acceder • Estilos Power BI • Fuentes Power BI • APIs no documentada • Cookies o almacenamiento local • Entorno de Desarrollo • Node.js • Paquete Power BI Custom Visual Tool (pbiviz) • JavaScript D3 • Opciones de despliegue • Archivos personalizados para importar • Publicación a nivel Organización • Publicación en el Marketplace
  • 24.
    #netcoreconf Ciclo de desarrollo CreationCoding Testing Packaging Submission Custom Visual Tool PowerBI.com Developer End user Optional
  • 25.
    #netcoreconf Conectores Personalizados • PowerQuery SDK • Casos de Uso • Crear una vista más amigable de un API REST • Propocionar un branding personalizado para un origen ya soportado (OData, ODBC,…) • Implementar un flujo de autenticación OAuth v2 para un servicio SaaS • Exponer una vista filtrada de datos para mejorar usabilidad • Habilitar DirectQuery para un origen de datos vía un driver ODBC
  • 26.
    #netcoreconf Conector sobre undriver ODBC Data Source
  • 27.
    #netcoreconf Conector sobre unservicio OData OData Service
  • 28.
    #netcoreconf Conector basado enM para cualquier origen SaaS SaaS
  • 29.
  • 30.
    #netcoreconf Datos en TiempoReal • Las Ventanas de los Paneles muestran datos actualizados si el conjunto de dato subyacente es: • Push • Streaming • PubNub • Si queremos embeberlo debemos de embeber el panel completo
  • 31.
    #netcoreconf Power BI RESTAPI Datasets Tables Power BI workspace Rows Jerarquía del Modelo de Objetos Operaciones Comunes List all datasets Create a dataset List all tables Update an existing table schema Add rows to a table in a dataset Clear the rows in a table List all groups List all dashboards List all tiles List all reports
  • 32.
    #netcoreconf Enviando datos através del Power BI REST API • Cuando creamos un Conjunto de Datos, podemos especificar la propiedad defaultMode • Push • Streaming • PushStreaming • Los paneles con ventanas de estos conjuntos de datos se actualizan en tiempo real
  • 33.
    #netcoreconf Demo: Paneles enTiempo Real 1. Navegando el modelo de objetos 2. Inyectamos datos a través del Power BI REST API
  • 34.
  • 35.