Power BI

python como una “herramienta externa” en Power BI Desktop: Parte 2: Crear un archivo PBITool.json

Tiempo de leer: 4 minutos

En la Parte 1, presenté algunos escenarios posibles para usar python con Power BI fuera de las funciones integradas de python visual y script de python. Esta publicación se centra en la configuración de un archivo de herramienta externo básico que pasa la conexión del modelo de datos de Power BI para su uso en scripts de python. Va a ser un muy escenario básico, pero sienta las bases para, con suerte, mejores cosas por venir, como se describe en la Parte 1.

Definir un archivo JSON PBITool básico

Para ver una nueva herramienta en la cinta de Power BI Desktop, debe definir un archivo JSON y colocarlo en una carpeta específica en su estación de trabajo. los Destacados Las herramientas externas Tabular Editor, DAX Studio y ALM Toolkit tienen instaladores que se encargan de este paso. Dado que no tiene un instalador dedicado para colocar este archivo en el directorio requerido, necesitas definir manualmente el tuyo.

Siempre que el “formato de metadatos mejorado” para el modelo de datos esté habilitado y el JSON en su archivo sea preciso, debería ver su nueva herramienta en la cinta después de volver a abrir Power BI Desktop.

Definamos una herramienta externa llamada “Conexión de escritorio de Power BI” que muestra el logotipo de python en la cinta y muestra la información de conexión de Power BI actual cuando hace clic en ella.

Para comenzar, copie y pegue el siguiente JSON en un editor de texto (esencia).

{
  "version": "1.0",
  "name": "[Tool Name]",
  "description": "[Tool Description]",
  "path": "C:\[PATH TO PYTHON EXECUTABLE]\python.exe",
  "arguments": "C:/[PATH TO PYTHON SCRIPT].py "%server%" "%database%"",
  "iconData": "data:image/png;base64,[YOUR BASE64 IMAGE CONTENT]"
}

Aquí hay un ejemplo que completé para mi herramienta de muestra básica para mostrar la conexión actual de Power BI Desktop. Estoy usando Anaconda, por eso ves python.exe desde la ubicación predeterminada de Anaconda en mi ruta.

 {
  "version": "1.0",
  "name": "Power BI Desktop Connection",
  "description": "Use python",
  "path": "C:\ProgramData\Anaconda3\python.exe",
  "arguments": "C:/Users/DavidEldersveld/Documents/python/PowerBIConnectionString.py "%server%" "%database%"",
  "iconData": ""
}

Desglosando el contenido:
versión: no cambies esto
nombre: nombre para mostrar en la cinta de Power BI Desktop
descripción: descripción de la herramienta externa (pensaría que esto aparecería como texto alternativo cuando se desplaza, pero solo el nombre se muestra al pasar el mouse)
camino: camino a tu python.exe expediente
argumentos: argumentos de línea de comando pasados ​​a su ejecutable
iconData: imagen base64 utilizada para el icono de cinta

Si miras el [tool].pbitool.json para otra herramienta como Tabular Editor, verá el servidor y base de datos pasado como los dos únicos argumentos. Para usar con python, esos pueden permanecer, pero su primer argumento deberá ser un script de python .py en este caso.

Quizás te interesa >>>  Formateo dinámico de medidas de conmutación

Para adaptar este archivo al suyo, determine los valores apropiados y reemplácelos según sea necesario.

 {
  "version": "1.0",
  "name": "[Tool Name]",
  "description": "[Tool Description]",
  "path": "C:\[PATH TO PYTHON EXECUTABLE]\python.exe",
  "arguments": "C:/[PATH TO PYTHON SCRIPT].py "%server%" "%database%"",
  "iconData": "data:image/png;base64,[YOUR BASE64 IMAGE CONTENT]"
}

Los dos más importantes serán los ruta correcta a su python.exe y el primer valor de argumento con el ruta correcta a su secuencia de comandos de python.

Sé que hay una forma de usar código para convertir imágenes a base64, pero siempre termino usando un sitio web como este por conveniencia: https://www.base64-image.de/

Agrega tu [tool].pbitool.json archivo a la carpeta correcta

Agregue su nuevo archivo a su C: Archivos de programa (x86) Archivos comunes Microsoft Shared Power BI Desktop Herramientas externas carpeta.

Crea tu secuencia de comandos de python

los [tool]El archivo .pbitool.json utilizó un archivo .py como primer argumento. De donde vino eso? ¡Viene de ti! Coloque el código que desee ejecutar en ese archivo y guárdelo en la ubicación que proporcionó en el [tool]Archivo .pbitool.json.

Para mi ejemplo de Conexión de escritorio de Power BI, mi script de muestra (esencia) está a continuación, que guardé como PowerBIConnectionString.py en la ruta descrita anteriormente [tool]Archivo .pbitool.json. El script simplemente imprime los argumentos del servidor y de la base de datos que se le pasan, luego concatena e imprime una cadena de conexión que podría usarse para conectarse a ese modelo de datos en particular.

import sys

print('Power BI Desktop Connection')
print(str(sys.argv[1]))
print(str(sys.argv[2]))

print('')
conn = "Provider=MSOLAP;Data Source=" + str(sys.argv[1]) + ";Initial Catalog='';"
print(conn)

input() 

sys.argv[1] es el argumento correspondiente al servidor y sys.argv[2] es el GUID de la base de datos. python comienza en 0, que es el valor del argumento asociado con la secuencia de comandos actual.

Si finalmente amplía las herramientas externas con sus propios scripts de python y pasa la conexión de Power BI Desktop, confiará en sys.argv[1].

El GUID de la base de datos entrará en juego en futuros scripts, pero no es necesario para este escenario inicial. Solo sepa que localmente, la cadena de conexión solo necesitará servidor: puerto.

Si tanto el script .py como [tool]El archivo .pbitool.json está en la ubicación correcta y, suponiendo que el script funcione, puede abrir Power BI Desktop. Marque la cinta Herramientas externas para ejecutar el script.

Próximamente en la Parte 3: .NET + python – Conexión al modelo de objetos tabulares (TOM)

Si bien este script básico funciona como está, hay un problema con esta configuración que cubriré en la próxima publicación. python.exe se ejecuta de forma independiente fuera de un entorno, por lo que los paquetes cargados en la base o en un entorno virtual alternativo no están disponibles para el script.

Para conectarnos al modelo de objetos tabulares de python, necesitaremos un poco de ayuda de .NET y algunos paquetes en mi entorno conda. La parte 3 contiene los ajustes al [tool]Archivo .pbitool.json que me permite usar un entorno virtual de python específico.

Enlaces de pago

Como asociado de Amazon, gano con las compras que califican.