En el siguiente ejemplo vamos a comprobar cómo obtener listado de Dashboards y Datasets con Python en pocos pasos.
Al final del artículo puedes descargarte el script para Jupyter notebook o si lo prefieres, puedes descargar el código Python para ejecutarlo directamente en tu consola de Workstation y programar su ejecución (el código entre Jupyter notebook y Workstation tienen ligeras diferencias, ya que la consola de Workstation no es 100% compatible, pero con el mismo resultado final)
Especificaciones del entorno
- Microsoft Windows 10
- MicroStrategy 2021 update 6 (11.3.6)
- Mstrio 11.3.6.102
- Python v3.9
- Jupyter Notebook
Demostración en video
Explicación del código
Importar librerías
Lo primero que realizamos es la importación de todas las librerías necesarias que van a intervenir en nuestro script.
import csv import pandas as pd from datetime import datetime from mstrio.types import ObjectSubTypes, ObjectTypes from mstrio.project_objects import Dossier from mstrio.project_objects.dossier import list_dossiers_across_projects from mstrio.object_management import Object
Conexión
El siguiente paso será realizar la conexión mediante MicroStrategy Library y definir los datos del servidor y del proyecto. En esta parte debes realizar cambios para adaptarlo a tu servidor.
import getpass from mstrio.connection import Connection mstr_usuario = "Administrator" mstr_pass = getpass.getpass(prompt='Password ') mstr_base_url = "https://tu_servidor:tu_puerto" mstr_url_api = mstr_base_url+"/MicroStrategyLibrary/api" projecto_id = "tu_id_proyecto" conn = Connection(mstr_url_api, mstr_usuario, mstr_pass, project_id=projecto_id, ssl_verify=False)
- Modifica tu usuario de MicroStrategy en la variable mstr_usuario
- En la línea 4, la variable mstr_pass preguntará en cada ejecución por la contraseña del usuario (no compatible en la consola de Workstation, pero sí en jupyter notebook). Lo puedes borrar y escribir tu contraseña directamente.
- En la línea 5, modifica la dirección del servidor IS.
- En la línea 6, la dirección de Library.
- Si tu objetivo es obtener un listado de todos los proyectos, elimina la fila 7 y en la última elimina project_id=projecto_id, de lo contrario cambia el ID del proyecto.
- El parámetro de conexión ssl_verify es opcional, en mi caso lo incluyo al ser un entorno de pruebas.
Declaración de funciones
Se declaran funciones para después reutilizarlas como son la búsqueda, la obtención de datasets y de dashboards.
def search_ancestors(ancestors): path='' if ancestors: for i in range(len(ancestors)): path= path+' > '+(ancestors[i]['name']) else: path="___NO PATH" return path[3:] def get_datasets(connection, project_ID, dossier_ID): res = connection.get(url=f"{connection.base_url}/api/v2/dossiers/{dossier_ID}/definition", headers={'X-MSTR-ProjectID': project_ID}) return res def get_object(connection, project_ID, object_ID): res = connection.get(url=f"{connection.base_url}/api/objects/{object_ID}?type=3", headers={'X-MSTR-ProjectID': project_ID}) return res
Buscar dossiers
El siguiente paso es obtener el número de dashboards que ha encontrado.
ldap=list_dossiers_across_projects(connection=conn) print(f"Nº de dossiers: {len(ldap)}")
Información de dashboards
Ahora de cada dashboard traemos cierta información como su ID, nombre, ruta, etc. junto a los datasets que se utilizan en cada dashboard.
Para visualizar el código de ejemplo es necesario iniciar sesión desde desde la barra lateral derecha, desde los comentarios o desde el pie de página. Puedes utilizar tu cuenta de Microsoft o de Google. Gracias.
Exportar resultados de los dashboards
En este paso exportamos los resultados de los dashboards a un CSV:
headers_dossiers=["ID Proyecto", "ID Dossier","Nombre Dossier", "Ruta Dossier", "Fecha creación", "Fecha modificación", "Nombre Dataset", "Id Dataset"] df = pd.DataFrame(dossiers_list, columns = headers_dossiers) df.to_csv(f"lista_de_dossiers.csv", index=False, encoding='utf-8', sep=",", quoting=csv.QUOTE_ALL, escapechar="\\", header=True) print("\nFin de la exportación.\n")
Información de dataset
En este paso realizamos casi lo mismo pero para obtener información de cada dataset.
Para visualizar el código de ejemplo es necesario iniciar sesión desde desde la barra lateral derecha, desde los comentarios o desde el pie de página. Puedes utilizar tu cuenta de Microsoft o de Google. Gracias.
Exportar resultado dataset
En este paso exportamos los resultados de los datasets a un CSV
Para visualizar el código de ejemplo es necesario iniciar sesión desde desde la barra lateral derecha, desde los comentarios o desde el pie de página. Puedes utilizar tu cuenta de Microsoft o de Google. Gracias.
Subtipos de dataset
Ten en cuenta esta lista de subtipos de dataset para entender mejor los resultados:
ID Subtipo | Descripción |
---|---|
773 | Informe base |
776 | Informe de cubo |
772 | Informe Datamart |
779 | Cubo Emma |
780 | Emma IRR |
770 | Informe mostrado como SQL |
769 | Informe mostrado como grafico |
768 | Informe mostrado como cuadricula |
774 | Informe mostrado como cuadricula y gráfico |
Descarga de ejemplos
Para visualizar el código de ejemplo es necesario iniciar sesión desde desde la barra lateral derecha, desde los comentarios o desde el pie de página. Puedes utilizar tu cuenta de Microsoft o de Google. Gracias.
Si descargas el script o visualizas el video, verás que en el script, al tratarse de un servidor de pruebas se ha incluido al principio dos lineas para ocultar advertencias de seguridad que en un entorno real no se deben escribir.