LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Para el tutorial de hoy, mostraré cómo puede automatizar el proceso de ordenar una columna por otra dentro de los servicios de análisis de LuckyTemplates y SSAS o SQL Server. Puedes ver el video completo de este tutorial en la parte inferior de este blog.

En este ejemplo, tenemos la tabla Fechas con varias columnas. Algunas columnas son la parte entera, que vamos a ocultar; y algunas columnas son la parte de la cadena, que le mostraremos al usuario final.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Entonces, tenemos las columnas Año calendario, Año calendario Mes y Mes. Lo que queremos hacer es automatizar la clasificación de estas tres columnas por su parte entera. Ordenaré el año calendario por el número del año calendario, el mes del año calendario por el número del mes del año calendario y el mes por el número del mes.

Pero no lo haremos uno por uno. Ejecutaremos un script que ordenará automáticamente eso para esta tabla en particular. En caso de que tenga varias columnas para varias tablas, puede usar ese script en esos conjuntos de tablas.

Vamos a usar Tabular Editor para escribir ese código C#, pero por ahora, Tabular Editor no tiene un IntelliSense para el lenguaje C#. Para hacerlo más fácil, usaremos Visual Studio (VS), donde tenemos el lenguaje IntelliSense para C# y también puede usar el código VS.

Tabla de contenido

Ordenar columnas en LuckyTemplates y SSAS usando C#

Primero, necesitamos crear un nuevo proyecto dentro de Visual Studio, que será la aplicación de consola (.Net Framework) para el lenguaje C#. Seleccionemos eso clic en Siguiente.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Entonces, podemos proporcionar cualquier nombre al proyecto. Voy a llamar a este SortBy y haré clic en Crear.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Ahora, puedes ver que tenemos el código. Una vez que el código funcione, simplemente lo copiaremos y pegaremos dentro de Tabular Editor.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Pero, para que el código funcione dentro de Visual Studio, debemos establecer una referencia a una biblioteca. Y para eso, simplemente podemos hacer clic en Referencias y elegir la opción Administrar paquetes NuGet dentro de la opción del navegador.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Dentro de la opción de navegación, necesitamos escribir servicios de análisis . Y luego, en las opciones que están disponibles, debemos seleccionar la segunda y hacer clic en Instalar. Comenzará la instalación y la instalación tardará unos segundos en completarse.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

A continuación, debemos escribir dentro del código, Usando Microsoft.AnalysisServices.Tabular y luego escribir un punto y coma. Vamos a crear un objeto de servidor, así que simplemente podemos escribir Servidor , y el nombre del objeto de servidor será Servidor mismo, y vamos a escribir Nuevo Servidor .

Básicamente, estamos creando un nuevo objeto dentro de la memoria. Y para conectar ese servidor al archivo de LuckyTemplates, vamos a usar un método del objeto del servidor. Entonces, escribamos server.Connect , y aquí proporcionaremos el número de puerto en el que está escuchando AnalysisServices dentro de LuckyTemplates.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Para encontrar ese número de puerto, vamos a Herramientas externas, hacemos clic en DAX Studio , y en la parte inferior, encontraremos el host local. Ese es el número de código en el que los servicios de análisis del servidor SQL que tenemos dentro de LuckyTemplates están escuchando los cambios que estamos enviando a través de LuckyTemplates o cualquier otra herramienta externa.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

El servidor es una cosa, pero un servidor también puede tener varios modelos en el caso de SSAS. Pero ahora mismo, en LuckyTemplates, solo tenemos un modelo. Entonces, vamos a declarar ese modelo. Escribimos aquí Modelo es igual a (=) servidor.Bases de datos , y accederemos a la primera base de datos dentro de ese servidor, así que escribiremos .Modelo .

Ahora probemos si esa parte del código funciona o no. Para hacer eso, simplemente imprimiremos la lista de todas las tablas que tenemos dentro de ese modelo de datos. Por lo tanto, escribiremos aquí, para cada (Table t in model.Tables) , abra el corchete y presione enter.

Después de eso, escribimos Console.WriteLine (t.Name) . Para asegurarnos de que la ventana no se cierre automáticamente una vez que imprima el nombre de las tablas, escribiremos Console.ReadLine , paréntesis de apertura y cierre y un punto y coma. Ahora, todo lo que tenemos que hacer es hacer clic en la opción Inicio y esperar a que se ejecute.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Puede ver que podemos imprimir el nombre de las tablas que tenemos dentro del modelo de datos. Tenemos las Fechas, Producto, Cliente y Tienda. Eso confirma que la configuración que hemos creado está funcionando.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Entonces, ahora podemos entrar en el meollo del código y comenzar a crear el código que nos ayudará a clasificar esa columna por la contraparte entera.

Deshagámonos de todo lo que hemos creado de la parte ForEach . Vamos a mantener el servidor y el modelo como están. Declaremos una variable que contendrá el nombre de la tabla en la que queremos iterar. Lo nombraré como DatesTable , y el nombre de la tabla será básicamente Dates .

A continuación, tendremos foreach var t en model.Tables , luego usaremos una cláusula where , para que podamos decir dónde va T a t.Name debe ser igual a DatesTable . Si actualmente estamos iterando en DatesTable, vamos a iniciar otro ciclo sobre todas las columnas de esa DatesTable. Entonces, para eso, podemos escribir foreach var c en t.Columns .

Para probar si estamos iterando solo sobre DatesTable y tenemos acceso a todas las columnas de DatesTable, simplemente podemos imprimir Console.WriteLine , y vamos a decir c.Name .

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Si presiono F5, puede ver que tenemos acceso a las columnas.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Ahora podemos continuar y escribir más código.

Vamos a crear una lista de tuplas que contendrá tres columnas más. Una de las columnas será la columna de destino. La segunda columna será la columna a través de la cual queremos ordenar la columna de destino, y la tercera columna simplemente será verdadera o falsa, ya sea que queramos ocultar la columna a través de la cual realmente estamos ordenando.

Digamos que queremos ordenar la columna del año calendario por el número del año calendario. La primera columna contendrá el año calendario, la segunda columna será para el número del año calendario y la tercera columna decidirá si queremos ocultar la columna del número del año calendario después de haber completado la clasificación o no.

Y para eso, volvamos a Visual Studio, donde vamos a crear una nueva variable. Puedes nombrarlo como quieras. En este ejemplo, lo llamaré colOperations . A continuación, vamos a escribir new , y luego vamos a crear una lista y escribiremos el tipo de columnas (string, string y bool). Después de eso, creamos las tuplas.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Básicamente, simplemente estamos creando una lista de tres columnas, y para tres columnas, hemos proporcionado dos filas. Ahora, dentro de nuestro bucle foreach , vamos a iniciar un bucle for . Básicamente, lo que estamos diciendo es que declarar una variable comience con i en cada iteración. Si i es menor que colOperations.Count, simplemente incremente eso .

A continuación, vamos a escribir una instrucción IF . El c.Name pertenece al nombre de la columna en la que nos encontramos actualmente. Luego, tenemos colOperations i . La i básicamente nos permite acceder a una fila en particular. Y cuando escribimos .Item1 , podemos acceder a la primera columna, segunda columna o tercera columna.

Así que primero vamos a usar la columna Item1 . Si eso es cierto, simplemente escribimos c.SortByColumn debe ser igual a t.Columns . Recuerde que t es el objeto de la tabla. Luego, estamos accediendo a las columnas de esa tabla en particular. Queremos colOperations , la fila en la que nos encontramos actualmente en las operaciones de columna, y la columna es básicamente el objeto Item2 .

Finalmente, para ocultar esa columna en particular a través de la cual estamos aplicando la ordenación, escribimos una última línea de código.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Entonces, ahora que hemos escrito el código principal que vamos a ejecutar en nuestro modelo tabular, simplemente podemos copiar el código de var colOperations y llevarlo al Editor Tabular, y luego vamos a ejecutar el mismo código.

Clasificación de columnas en LuckyTemplates y SSAS mediante el editor tabular

No vamos a usar el servidor o el objeto del modelo porque, en segundo plano, Tabular Editor sabrá automáticamente a qué modelo de LuckyTemplates o de servicios de análisis tiene que conectarse. Entonces, no necesitamos usar esas variables porque ese ya es el trabajo del editor tabular para identificar cómo quiere conectarse a esos modelos.

De vuelta en LuckyTemplates, vamos a iniciar Tabular Editor 3 o Tabular Editor 2. Puede usar el que desee. En este caso, vamos con Tabular Editor 3.

Vamos a la pestaña Archivo, hacemos clic en Nuevo código C# y cerramos la opción Propiedades. Entonces, podemos pegar el código aquí. Lo único de lo que tenemos que asegurarnos es que en lugar de usar la variable del modelo es usar el objeto del modelo . Entonces, usemos la M mayúscula y ejecutemos ese código.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

Ahora que el script se ha ejecutado correctamente y también dice que muestra tres cambios en el modelo, vamos a confirmar los cambios en el modelo de datos. Guardaremos lo que hayamos aplicado a esas columnas.

De vuelta en LuckyTemplates, puede ver que el Número de mes está oculto. Si hago clic en la columna Mes y voy a Herramientas de columna , y a Ordenar por columna , puede ver que esa columna en particular ha sido ordenada por el Número de mes. Lo mismo ocurre con el Número de Mes del Año Calendario.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#

El año calendario se ordena solo porque no teníamos esa columna dentro de ese código C#. Entonces, lo que podemos hacer es volver a iniciar el Editor Tabular y crear otra tupla. Y luego, una vez más ejecutamos ese script.

LuckyTemplates y SSAS: clasificación de columnas mediante TE3 y C#


Editor tabular LuckyTemplates: revisión y tutorial de la versión 3
Editor tabular 3 de LuckyTemplates: automatización con una secuencia de comandos
Codificación DAX dentro del editor tabular 3

Conclusión

Así de fácil es automatizar el proceso de ordenar una columna por otra columna en y SSAS. Este fue un ejemplo muy básico de cómo puede hacer esa operación dentro de la tabla Fechas. Pero puede enriquecer esta lista agregando más columnas y luego buscar otra tabla.

De esa forma, puede reducir la cantidad de tiempo que tiene que dedicar a clasificar estas columnas para los mismos modelos que va a crear una y otra vez.

Espero que hayas encontrado esto útil. Si tienes alguna pregunta, solo házmelo saber en la sección de comentarios.


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber