¿Hay alguna forma de recuperar todas las medidas?

Un usuario Pregunto ✅

Ghuiles

Hola

¿Hay alguna forma de recuperar todas las medidas de un archivo pbix y exportarlas o copiarlas a un archivo txt?

Eso ayudaría a obtener más documentación y también a realizar cambios masivos si fuera necesario.

Salud.

Hola @Ghuiles,

Sí hay. Puede ejecutar una consulta del DMV en el cubo tabular.

Esencialmente, debe conectarse a su instancia de Power BI Desktop desde una herramienta como AS Sql Server Management Studio (o MDX Studio) y emitir la siguiente consulta

SELECCIONE [CATALOG_NAME] como [DATABASE],
CUBE_NAME AS [CUBE],[MEASUREGROUP_NAME] COMO [FOLDER],[MEASURE_CAPTION] COMO [MEASURE],
[MEASURE_IS_VISIBLE]
FROM $ SYSTEM.MDSCHEMA_MEASURES
Esto generará información sobre sus medidas

Ghuiles

En respuesta a Phil_Seamark

Hola

Encontré una mejor solución, siguiendo ese video: https://www.youtube.com/watch?v=rYlIp1PrBcA

2017-04-03 19_25_13-DaxStudio - 2.6.0.png

Básicamente, en DAX Studio, hace clic en MDSCHEMA_MEASURES.

Obtienes un SQL, lo ejecutas y obtienes muchos detalles sobre tus medidas.

Eso, por supuesto, puede exportar directamente a Excel.

Salud

JasonPad

Con Power BI Desktop de mayo de 2021,

prueba esto

https://github.com/JasonPad19/PowerBIScanner/blob/main/README.md

Anónimo

¿Hay alguna forma de recuperar las medidas y dimensiones de un gráfico en particular?

Este es el primer resultado en Google, así que lo estoy publicando aquí.

Hoy descubrí que el antiguo método de descomprimir un archivo pbix y explorar DataModelSchema funciona en archivos .pbit de plantilla de PowerBI.

  1. Abra un archivo .pbix en PowerBI Desktop
  2. Guardar como plantilla .pbit
  3. Cambie la extensión del archivo de .pbit a .zip
  4. Abra DataModelSchema en un editor de texto.
  5. Extrae el esquema

Las medidas se pueden encontrar en: model.tables.measures

Las columnas se pueden encontrar en: model.tables.columns

Las columnas calculadas se pueden encontrar en: model.tables.columns filtrando calculado = verdadero

Para simplificar esto, escribí un programa en C #, pero cualquier lenguaje que analice JSON funcionará. Aquí está el código fuente básico de C #. Solo usé linqpad para ejecutarlo.

// using System;
// using System.Linq;
// using System.IO;
// using System.Collections.Generic;
// using Newtonsoft.Json

void Main()
{
	// get the JSON from pbit DataModelSchema
	string strFolderName = @"c:pathtofile";
	string strFileName =  @"DataModelSchema";
	string strJson = File.ReadAllText(strFolderName + strFileName);

	// Convert the Json to a dynamic object
	dynamic oJson = JsonConvert.DeserializeObject<dynamic>(strJson);

	// Extract the tables to a list<dynamic>
	List<dynamic> oTables = new List<dynamic>(oJson.model.tables);

	// Remove hidden tables from the pull. These are only sysetm generated date tables.
	oTables = oTables.Where(t => t.isHidden != true).ToList();

	foreach (var oTable in oTables) // Foreach Table, do something
	{
		Console.Write((string)oTable.name); // Output the table name
		if (oTable.measures != null) // If the table has measures
		{
			List<dynamic> oMeasures = new List<dynamic>(oTable.measures);
			foreach (var oMeasure in oMeasures) // Foreach measure
			{
				Console.Write(string.Format("nntt{0} = {1}", (string)oMeasure.name, (string)oMeasure.expression)); // Write the measure and expression
			}
		}
		if (oTable.columns != null) // If the table has columns
		{
			Console.WriteLine(); // Insert a new line
			List<dynamic> oColumns = new List<dynamic>(oTable.columns);
			oColumns = oColumns.Where(c => c.type == "calculated").ToList(); // Filter on calculated columns only, but this could be removed for all
			foreach (var oColumn in oColumns)
			{
				Console.Write(string.Format("nntt{0} = {1}", (string)oColumn.name, (string)oColumn.expression)); // Write the column and expression
			}
		}
		Console.WriteLine();
	}
}

grahamfletcher1

¿Hay alguna forma de hacer lo contrario? Quiero cargar las medidas en el archivo PBIX desde SQL.

Estoy pensando en crear una biblioteca de medidas en SQL que daría a todos los diferentes desarrolladores acceso a la lista de medidas. También significa que las medidas se pueden editar y actualizar en varios archivos PBIX.

Sean

@Ghuiles

Tendrá que usar DAX Studio http://daxstudio.codeplex.com/

Cómo hacerlo se describe aquí http://exceleratorbi.com.au/getting-started-dax-studio/

En respuesta a Sean

Hola @Sean.

No me di cuenta de que podía usar DAX Studio para DMV, pero supongo que tiene sentido. Normalmente hago mi trabajo de DMV en SSMS (o en Power BI Desktop) y ese es un gran artículo de @MattAllington

En respuesta a Phil_Seamark


@Phil_Seamark escribió:

Hola @Sean.

No me di cuenta de que podía usar DAX Studio para DMV, pero supongo que tiene sentido. Normalmente hago mi trabajo de DMV en SSMS, (o en el propio Power BI Desktop@) y ese es un gran artículo de @MattAllington


@Phil_Seamark

¿Podría tener una explicación más detallada sobre cómo hacerlo en Power BI Desktop? Conozco los DMV en SQL Server, solo me pregunto cómo hacerlo en Power BI Desktop. Gracias por adelantado.

En respuesta a Eric_Zhang

Hmmm, tal vez no.

Solía ​​poder descomprimir los modelos de Power Pivot y extraer las fórmulas de los archivos xml, pero han comprimido / cifrado los datos, por lo que no es tan sencillo.

Ghuiles

En respuesta a Phil_Seamark

Hola

Encontré una mejor solución, siguiendo ese video: https://www.youtube.com/watch?v=rYlIp1PrBcA

2017-04-03 19_25_13-DaxStudio - 2.6.0.png

Básicamente, en DAX Studio, hace clic en MDSCHEMA_MEASURES.

Obtienes un SQL, lo ejecutas y obtienes muchos detalles sobre tus medidas.

Eso, por supuesto, puede exportar directamente a Excel.

Salud

Anónimo

En respuesta a Ghuiles

¿Alguna idea de cómo obtener las medidas que se crearon en un informe de Power BI y el informe de Power BI se conecta a una base de datos de Analysis Services en modo de consulta directa?

KevinNC

En respuesta a Ghuiles

¡Eso es genial! Gracias por compartir

Sean

En respuesta a Phil_Seamark

Sí, la otra cosa que recomiendo es la herramienta de utilidades de Power Pivot https://www.sqlbi.com/tools/power-pivot-utilities/

Sin embargo, ya sea que instale PP Util o no => iniciar DAX Studio desde EXCEL incluso si acaba de instalar el complemento DAX Studio

De esta manera, cuando obtenga la Lista de TODAS las medidas en su modelo, tendrá la opción de Salida en Excel

¡Si no comienza desde Excel, no obtendrá esa opción!

DAX Studio Excel.png

Ghuiles

En respuesta a Sean

¡Hola tios!

¡Muchas gracias @Sean y @Phil_Seamark! ¡Aprendí mucho!

Usé el SQL de Phil con el estudio DAX.

Actualmente no utilizamos un servidor SQL. Los datos de PBI provienen de Excel (Essbase).

Ahora tengo la lista de las medidas, sí, pero no su cálculo respectivo. ¿Hay alguna forma de conseguirlos?
Esto realmente me ayudaría a hacer cambios masivos.

Salud

En respuesta a Ghuiles

No he visto un DMV para esto, pero el archivo PBIX es solo un archivo .zip, por lo que posiblemente pueda analizar el texto sin procesar (sería bastante feo, pero podría hacerlo en Power BI 🙂

Ghuiles

En respuesta a Phil_Seamark

¡Gracias de nuevo Phil!

Hice el trabajo manualmente.

Salud

En respuesta a Sean

Creo que también tendré que encontrar un DMV mejor para ti.

El que se proporciona solo devuelve 1 fila con respecto a un modelo de escritorio PBI. Sin embargo, funciona maravillosamente contra cubos tabulares.

En respuesta a Phil_Seamark

Si ejecuta la siguiente consulta del DMV, muestra una lista de las diversas tablas de metadatos que puede consultar.

SELECT * FROM $System.DBSchema_Tables   

Entonces, para una lista de columnas

SELECT * FROM $SYSTEM.DBSCHEMA_COLUMNS where Table_Schema="Model"

Ghuiles

En respuesta a Phil_Seamark

Hermosa 🙂

Hola @Ghuiles,

Sí hay. Puede ejecutar una consulta del DMV en el cubo tabular.

Esencialmente, debe conectarse a su instancia de Power BI Desktop desde una herramienta como AS Sql Server Management Studio (o MDX Studio) y emitir la siguiente consulta

SELECCIONE [CATALOG_NAME] como [DATABASE],
CUBE_NAME AS [CUBE],[MEASUREGROUP_NAME] COMO [FOLDER],[MEASURE_CAPTION] COMO [MEASURE],
[MEASURE_IS_VISIBLE]
FROM $ SYSTEM.MDSCHEMA_MEASURES
Esto generará información sobre sus medidas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *