Una pregunta tremendamente habitual: ¿Cómo puedo acceder los datos de mi modelo?
¿Sabíais que podemos conectarnos desde un flujo de datos a un conjunto de datos? Esto no está muy extendido ni documentado, pero se puede utilizar la conexión al cubo de analysis services que se crea en el servicio de Power BI desde cualquier Power Query, bien desde el desktop, bien desde power Query online o incluso desde Excel.
Para ello simplemente tenemos que copiar la url de conexión que nos encontramos en la configuración del área de trabajo. Sólo la muestra en áreas Premium per user, pero, aunque no se tenga licencia ppu se puede marcar el área como Premium per user un momento para copiar la url. O más fácil todavía, siempre tienen el siguiente esquema: powerbi://api.powerbi.com/v1.0/myorg/[NOMBRE AREA TRABAJO] Luego simplemente nos vamos a nuestro flujo de datos y creamos una nueva consulta con el conector de Analysis Services, que por desgracia no encontrareis, (al menos a día de hoy 20/10/2021). Sin embargo, si se admite la función de M para conectarse por lo que, donde no llega la interfaz… llega M. El conector es Analysis.Services.Database y requiere un servidor, que tenemos, un database, que es el nombre del modelo y en las options es necesario elevar una Query nativa
Pues bien, voy a extraer con esta función dimFechas de un dataset que tengo en ese área de trabajo
let
Consulta1 = AnalysisServices.Database("powerbi://api.powerbi.com/v1.0/myorg/Prueba Eliminacion", "Prueba Eliminacion", [Query="evaluate dimFechas", Implementation="2.0"])
in
Consulta1
donde
let
Consulta1 = AnalysisServices.Database("powerbi://api.powerbi.com/v1.0/myorg/
Prueba Eliminacion", //Este es el nombre del área de trabajo
"Prueba Eliminacion", // Este es el nombre del conjunto de datos
[Query="evaluate dimFechas", //Este es el nombre de la tabla que queremos importar, precedida de evaluate ya que debe ser una expresión DAX
Implementation="2.0"])
in
Consulta1
El resultado, nuestra tabla del dataset en nuestro Dataflow.
El pequeño problema que nos encontramos es el nombre de la columna que en este tipo de orígenes devuelve el nombre de la tabla y entre corchetes el nombre de la columna. Son un total de 28 columnas esa tabla así que podemos ir una a una cambiando los nombres o seguir haciendo magia con M:
Paso1_ExtraerNombres= Table.Columnames(Consulta1)
Este paso nos crea una lista con todos los nombres de las columnas.
Paso2_Reemplazar1= List.ReplaceValue( Paso1_ExtraerNombres, “dimFechas[“,”” Replacer.ReplacerText),
En este paso estamos reemplazando DimFechas[ por “”
Paso3_Reemplazar2= List.ReplaceValue( Paso2_Reemplazar1, “]“,”” Replacer.ReplacerText),
En este paso estamos reemplazando el ultimo corchete ] por “”
De esta manera ya tenemos nuestra lista de columnas limpia y sólo falta devolverla a su sitio:
En el último paso de cambiar nombres, Cambiamos los nombres de la columna de la tabla original que era Consulta 1 y mediante List.Zip extraemos los nombres de las columnas existentes en ese momento cambiándolas por la lista definitiva del Paso3 Reemplazar2
Este es el código final resultante:
let
Consulta1 = AnalysisServices.Database("powerbi://api.powerbi.com/v1.0/myorg/Prueba Eliminacion", "Prueba Eliminacion", [Query="evaluate dimFechas", Implementation="2.0"]),
Paso1_ExtraerNombres = Table.ColumnNames(Consulta1),
Paso2_Reemplazar1 = List.ReplaceValue(Paso1_ExtraerNombres, "dimFechas[", "", Replacer.ReplaceText),
Paso3_Reemplazar2 = List.ReplaceValue(Paso2_Reemplazar1, "]", "", Replacer.ReplaceText),
CambiarNombres = Table.RenameColumns(Consulta1 , List.Zip({Table.ColumnNames(Consulta1), Paso3_Reemplazar2}))
in
CambiarNombres
Este ejercicio lo he hecho en Dataflows, pero también podemos conectarnos a cualquier tabla de nuestro conjunto de datos de power bi desde otro archivo de power bi o desde Power Query en Excel.
De verdad seguís exportando tablas del modelo con dax studio o copiando directamente desde el desktop tablas estáticas sin conectaros directamente al modelo.
Insisto esta capacidad no es exclusiva del licenciamiento premium, se puede realizar esta conexión con licencia pro.
Todos estos tips y muchos más en mi próximo libro:
Power BI Dataflows.
15% de descuento preinscribiéndose en el siguiente formulario:
3 comentarios