Manejo de medidas masivas (copia entre informes/cambios de formato)

Un usuario Pregunto ✅

karaoano


Un requisito al que nos enfrentamos muy a menudo en nuestros proyectos es poder reutilizar fácilmente múltiples medidas, especialmente cuando se trata de modelos de datos similares. en una fuente de datos estándar como, por ejemplo, sistemas de contabilidad basados ​​en la nube como Dynamics, Xero, QuickBooks, etc.

Una opción son las plantillas .pbit estandarizadas que se generan automáticamente en Acterys, pero no se pueden usar en todas las situaciones. Hasta el momento, Power BI no ofrece una vista de secuencia de comandos como SSAS MD donde puede copiar fácilmente definiciones de medida de un modelo a otro. Tampoco puede seleccionar varias medidas y copiarlas de un informe a otro. Usando solo Power BI, debe copiar una medida por cada medida que desee reutilizar.

Un poco molesto… Pero hay una gran salida. No es oficialmente compatible con Microsoft, pero funciona.

La respuesta es «Editor tabular», una bendición para nosotros, los profesionales de la consultoría que tenemos que reutilizar medidas y aplicar acciones masivas a las medidas de forma continua.

¡Un gran gracias! aquí va para Daniel Otykier, quien es la mente maestra detrás del Tabular Editor, y quien me ayudó mucho a refinar la técnica que estoy cubriendo aquí. Daniel debería, en mi humilde opinión, ser un competidor muy candente para desarrollar la «Herramienta comunitaria de Power BI más útil» (en un nivel similar al estudio DAX: gracias a Darren, Marco y Rui).

El editor tabular ofrece excelentes funciones de edición y secuencias de comandos para los modelos tabulares de SSAS, que son la base de Power BI.

¿Como funciona?

Simplemente conecte Tabular Editor a Power BI:

Peligro, Peligro Will Robinson

Recibirá una advertencia de que lo que está a punto de hacer es peligroso y no está respaldado oficialmente:

Sin riesgo no hay diversión…

Pero recomiendo encarecidamente hacer lo que le indica el cuadro de diálogo y tener una copia de seguridad de su archivo.

Después de haber dado el gran salto al «lado no compatible» oscuro y haber conectado su modelo, puede navegar por su modelo, tablas y todas las medidas, por ejemplo:

Desde aquí, ahora puede seleccionar tantas medidas como desee, copiarlas en el portapapeles o aplicar otras acciones masivas.

PERO no te detengas tan rápido….

Hay una cosa importante que debe hacer de antemano: al proceso de copia no le gustan las anotaciones de formato con las medidas. Por lo tanto, si continúa de esta manera, obtendrá un error una vez que intente guardar las medidas pegadas en su modelo de destino.

Cuando encontré este problema, Daniel vino al rescate y sugirió aplicar un script que elimina las anotaciones de formato de las medidas. Es una línea simple:

Selected.Measures.ForEach(m => m.RemoveAnnotation(«Formato»));

El truco

Para que funcione, simplemente seleccione todas las medidas que desea copiar y copie este script en la pestaña «Advanced Scripting» y ejecute el script (haga clic en el triángulo verde):

Eso es. Ahora puede simplemente presionar CTRL-C o ir a «Editar» -> «Copiar» y sus definiciones de medida están en el portapapeles.

El único paso que queda es abrir el archivo .pbix de Power BI de destino con otra instancia del editor tabular. Navegue hasta la tabla correspondiente y péguela desde el portapapeles. Voila todas sus medidas están ahí.

También se puede utilizar un enfoque similar para otras operaciones a granel. Por ejemplo, si desea aplicar el mismo formato de número a varias medidas a la vez, simplemente selecciónelas y elija la cadena de formato en las propiedades del Editor tabular.

Una última cosa: en caso de que esté utilizando Medidas rápidas: estas tampoco gustan mucho de la operación de copiar y pegar. Para que funcione, debe ejecutar este script que desarrolló Daniel. Eliminará tanto la anotación de formato como las propiedades extendidas.:

var extProp = typeof(Measure).GetProperties( System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic ).FirstOrDefault(p => p.PropertyType.Name == «Measure» && p.Name == «MetadataObject «); foreach(var m en Selected.Measures){ m.RemoveAnnotation(«Formato»); var tomObject = (Microsoft.AnalysisServices.Tabular.Measure)extProp.GetValue(m); tomObject.ExtendedProperties.Clear();}

¡Para cualquier otra pregunta, envíenos una línea o chatee con nosotros!

Deja un comentario

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