miércoles, 29 de abril de 2020

PowerPivot: CROSSFILTER con DAX

Hablaremos de una función DAX para PowerPivot muy interesante, CROSSFILTER, que nos permite 'saltarnos' las relaciones existentes en nuestro modelo de datos.

La sintaxis de la función es:
CROSSFILTER(columna 1, columna 2, dirección)
siendo:
columna1: Nombre de una columna existente, con la sintaxis DAX estándar y completo, que normalmente representa el lado "varios" de la relación que se va a usar. Si los argumentos se proporcionan en orden inverso, la función los intercambia antes de usarlos. Este argumento no puede ser una expresión.
columna2: Nombre de una columna existente, con la sintaxis DAX estándar y completo, que normalmente representa el lado "uno" o de búsqueda de la relación que se va a usar. Si los argumentos se proporcionan en orden inverso, la función los intercambia antes de usarlos. Este argumento no puede ser una expresión.
Dirección: Dirección del filtro cruzado que se va a usar. Debe ser una de las siguientes:
ninguna: No se produce ningún filtrado cruzado en la relación.
One Way: los filtros en el lado "uno" o de búsqueda de la relación filtran el lado "varios".
Both: los filtros de cualquier lado filtran el otro.
None: no se produce ningún filtrado cruzado en esta relación.

A tener en cuenta!!
La función no devuelve ningún valor!, solo establece la dirección del filtrado cruzado de la relación indicada mientras dura la consulta.

En el caso de una relación 1:1, no hay ninguna diferencia entre las direcciones One Way y Both.
CROSSFILTER solo se puede usar en funciones que toman un filtro como argumento, por ejemplo: funciones CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD y TOTALYTD.
Si las expresiones de CALCULATE están anidadas y más de una expresión de CALCULATE contiene una función CROSSFILTER, la instancia de CROSSFILTER más interna es la que prevalece en caso de conflicto o ambigüedad.


Veamos algunos ejemplos sobre el siguiente Modelo de datos:

PowerPivot: CROSSFILTER con DAX


Notemos las relaciones creadas entre las tablas:
TblProducto y TblPdtoPrecio
TblIVA y TblClientes
(marcadas en rojo en la imagen).

Como se ve, el sentido de la relación es contrario al habitual... No importan ahora los motivos de esta definición.
La hipótesis es que estos sentidos no se pueden cambiar ya que podrían cambiar ciertos cálculos, o simplemente porque no está permitido ;-).
Lo que aprenderemos hoy, usando CROSSFILTER, es la forma de 'saltarse' los sentidos definidos de dichas relaciones.


Para el primer ejemplo definiremos la siguiente medida:
Pz_Venta:=sumx(TblVentas;TblVentas[Unidades]*TblVentas[Precio Venta unitario])

PowerPivot: CROSSFILTER con DAX



Es una simple medida que calcula el producto de 'Unidades' por el 'Precio Venta Unitario', ambos valores de la 'TblVentas'.

El problema surgiría si tuviéramos que resumir la información de estas Ventas por un campo de la 'TblDirector' (tabla con la 'relación invertida'), ya que veríamos la siguiente tabla dinámica:

PowerPivot: CROSSFILTER con DAX


Además de obtener un 'error de relaciones' en la tabla dinámica, comprobamos fácilmente como el resultado obtenido no responde a lo buscado, ya que repite el importe global en todos los 'Directores'...
La solución pasa por emplear CROSSFILTER para recomponer solo para este cálculo la relación.
Crearemos una nueva medida:
TotalVentasCROSS:=CALCULATE([Pz_Venta];CROSSFILTER(TblDirector[Cod país];TblPais[Cod país];Both))

en este caso apoyándonos en el cálculo de la medida anterior [Pz_Venta].

PowerPivot: CROSSFILTER con DAX



Si llevamos nuestra nueva medida a la tabla dinámica comprobamos como el resultado se ajusta a la realidad!

PowerPivot: CROSSFILTER con DAX



Veamos un segundo ejemplo donde aplicaremos CROSSFILTER para montar un informe que muestre los PVP (Precios con IVA incluido) para cada Zona.
Añadimos una primera medida:
PVP:=SUMX(TblVentas;[Pz_Venta]*(1+RELATED(TblIVA[%IVA])))

Y una segunda medida, de manera similar al primer ejemplo, basado en la medida [PVP]
PVP_CROSS:=CALCULATE([PVP];CROSSFILTER(TblDirector[Cod país];TblPais[Cod país];Both))

PowerPivot: CROSSFILTER con DAX



Al generar la tabla dinámica en la hoja de cálculo con esas medidas verificamos el dispar comportamiento de una y otra...

PowerPivot: CROSSFILTER con DAX


Únicamente al usar en nuestra medida la función CROSSFILTER obtenemos el dato cruzado correcto para las Zonas de ventas...

Se observa que solo cuando están involucrados campos, de las distintas Tablas de nuestro modelo de datos, por la 'relación inversa' tiene sentido aplicar la función CROSSFILTER en nuestras medidas...

jueves, 23 de abril de 2020

Métodos abreviados para duplicar e insertar

Estoy bastante acostumbrado a trabajar con métodos abreviados en Excel y considero que conozco bastantes (algunos incluso poco frecuentes)... pero hoy descubrí por accidente un par de ellos que me han sorprendido!.
Seguramente porque habitualmente trabajo con Tablas, y estos métodos abreviados que te voy a comentar, tienen sentido especialmente si trabajamos sobre rangos 'normales'.

Comenzaremos con los siguientes datos, fijémonos en el rango B2:D11:

Métodos abreviados para duplicar e insertar



La idea o el fin de los métodos abreviados siguientes es poder mover o duplicar filas o columnas en un rango.

Comencemos. Los dos métodos abreviados comentados:
1-Seleccionar rango + Mayusc: Mueve e inserta el rango seleccionado en las celdas destino.
2-Seleccionar rango + Control + Mayusc: Duplica e inserta el rango seleccionado en destino.

Métodos abreviados para duplicar e insertar



Al trabajar con Tablas la acción de mover e insertar (no superponer y reemplazar) la damos por supuesta, pero al trabajar con rangos esa combinación empleando la tecla Mayúscula (OJO !!, NO la de Bloqueo mayúscula) tanto para mover como para duplicar (presionando al tiempo Control) se convierte en un plus!!.

martes, 21 de abril de 2020

Texto predictivo en celdas con Validación de datos

Hace unos días vi un vídeo de Leila Gharani en su canal de YouTube (recomendado!!) donde daba un uso interesante a las funciones desbordadas (ORDENAR, FILTRAR...) para conseguir el efecto de un 'texto predictivo' con la validación de datos.
Como aún no son de uso generalizado estas funciones pensé si era posible lograr algo similar con las funciones 'de toda la vida'... y llegué a una solución :O


Partiremos de una Tabla con un listado de frutas...

Texto predictivo en celdas con Validación de datos



Comenzaremos creando nuestra fórmula deseada que es capaz de listar por aproximación aquellas frutas que contengan el texto escrito en la celda, y la incluiremos en un nombre definido (que he llamada 'ndCoincidencias'):
=SI.ERROR(INDICE(Tabla1[Listado Frutas];K.ESIMO.MENOR(SI(NO(ESERROR(ENCONTRAR(Hoja1!$D3;Tabla1[Listado Frutas])));FILA(Tabla1[Listado Frutas])-1;"");FILA(INDIRECTO("1:"&CONTAR.SI(Tabla1[Listado Frutas];"*"&Hoja1!$D3&"*")))));"")

Texto predictivo en celdas con Validación de datos



Esta fórmula, con comportamiento matricial dentro del nombre definido, es capaz de listar aquellas frutas que contengan el texto buscado y escrito en una celda... en el ejemplo D3.
Es bastante elaborada... pero la clave es localizar las frutas coincidentes con la función ENCONTRAR. El resto básicamente identifica el número de la fila donde se encuentra la fruta para luego ordenarla (para que aparezcan 'arriba' en el listado de coincidencias), que conseguimos con K.ESIMO.MENOR.
Finalmente INDICE retorna los nombres de las frutas, en lugar de los número de filas.

La fórmula desbordada aportada por Leila Gharani en su vídeo era algo así:
ORDENAR(FILTRAR(Tabla1[Listado Frutas];ESNUMERO(ENCONTRAR($E3;Tabla1[Listado Frutas]));""))

Mucho más simple jeje...


Lo importante, en cualquier caso, no es la fórmula empleada, son los pasos siguientes.

Con el nombre definido ya creado, en mi caso:
ndCoincidencias=SI.ERROR(INDICE(Tabla1[Listado Frutas];K.ESIMO.MENOR(SI(NO(ESERROR(ENCONTRAR(Hoja1!$D3;Tabla1[Listado Frutas])));FILA(Tabla1[Listado Frutas])-1;"");FILA(INDIRECTO("1:"&CONTAR.SI(Tabla1[Listado Frutas];"*"&Hoja1!$D3&"*")))));"")

Fijémonos que la referencia a $D3 es mixta!!. Esto permite que al arrastrar la fórmula, en cada celda se refiera a lo escrito en su celda correspondiente.

Ahora trasladaremos a la hoja de cálculo los resultados...

Teniendo presente que mi rango de trabajo es D2:D12, en las celdas F2:F12 escribimos:
=TRANSPONER(ndCoincidencias)

Texto predictivo en celdas con Validación de datos



Accederemos ahora, tras seleccionar D2:D12, a la herramienta de Validación de datos tipo Lista.
IMPORTANTE!!!... Cambiamos y desmarcamos el check en la pestaña 'Mensaje de error' que indica: Mostrar mensaje de error si se introducen datos no válidos..
Este paso es fundamental ya que permite escribir en la celda valores que no cumplan la regla de validación!!.

Texto predictivo en celdas con Validación de datos



Sin salir de la herramienta vamos a la pestaña de 'Configuración', donde elegimos Permitir tipo Lista y en su Origen escribimos la referencia 'desbordada' usando la almohadilla o numeral #
=$F2#

Texto predictivo en celdas con Validación de datos



Listo... probemos el sistema ;-)
Escribimos en D2 un par de letras cualquiera, al pulsar el desplegable comprobaremos que solo veremos aquellas frutas que contengan las letras/sílabas escritas, esto es, algo muy parecido a un 'comportamiento predictivo'.

Por ejemplo, al escribir 'fr' y pinchar en el desplegable aparecen las frutas que contienen 'fr' que en el ejemplo son: fresa y frambuesa



El efecto es interesante ya que escribimos un texto, al pinchar el desplegable se valida ese texto, y NO salta error alguno puesto que desmarcamos, en su momento, la opción de Mostrar mensaje de error si se introducen datos no válidos., de forma inmediata, la fórmula agregada en el nombre definido 'trabaja' y retorna la matricial (o desbordada, según el caso) con las frutas coincidentes.. que a su vez, y nuevamente de manera inmediata, alimenta la validación de datos!!.

Interesante cuanto menos!!


Una última nota para terminar... negativa :'(
Este método no es aplicable a las Tablas.

jueves, 16 de abril de 2020

Segmentación de datos con símbolos

Hoy veremos cuán fácil es reemplazar textos o números por los símbolos que queramos dentro de una segmentación de datos.

Partamos de la siguiente situación. Una base de datos con una tabla dinámica asociada, y un cuadro de segmentación...

Segmentación de datos con símbolos



Por estética, y por dar un toque diferenciador, deseamos cambiar el aspecto del cuadro de segmentación, de tal forma que muestre los símbolos de las monedas.

Segmentación de datos con símbolos



Para ello tendremos que añadir a nuestra base de datos un nuevo campo 'Divisa_símbolo' que incorpore los símbolos deseados a mostrar.

En este caso, el símbolo del euro € o del dolar $ es fácil de insertar desde el teclado, para añadir la libra o el yen iremos a la ficha Insertar > grupo Símbolos > Símbolo, y en la ventana buscaremos el subconjunto de 'Símbolos de moneda'

Segmentación de datos con símbolos



Otra opción para insertar los símbolos en recordar su codificación ASCII:
$ alt + 36
£ alt + 156
¥ alt + 190
€ alt + 0128


Una vez incluido el nuevo campo (sea calculado o manual) ya podemos aflorar su Segmentación de datos.
Para esto actualizamos o refrescamos la tabla dinámica, y desde la barra de herramientas de tabla dinámica y su ficha de Análisis > grupo Filtrar > Insertar segmentación de datos, donde elegiremos el campo nuevo 'Divisa_Símbolo'

Segmentación de datos con símbolos


Donde ya visualizaremos los símbolos de las monedas buscadas...

Una forma alternativa, más directa (TRUCO!) de insertar un cuadro de segmentación, es desde el panel de la lista de campos (habitualmente a la derecha), hacer con el ratón clic derecho y buscar la opción Agregar como segmentación de datos

Segmentación de datos con símbolos



Por supuesto, otros símbolos pueden incorporarse de manera análoga...

martes, 14 de abril de 2020

Power Query: Cargar datos desde Nombre definido

Lo habitual al trabajar en Power Query es recuperar los datos desde una fuente en formato Tabla, no siendo posible (en condiciones normales) hacerlo a partir de un 'rango normal'.. lo interesante es que una forma alternativa al uso de las Tablas es emplear los Nombres definidos asignados a un rango para Cargar esos datos el Editor de Power Query...

Partiremos del rango de la imagen siguiente con el nombre asignado:
ndPYG =Hoja3!$B$2:$K$7

Power Query: Cargar datos desde Nombre definido



Basta seleccionar una celda dentro de ese rango y navegar hasta la ficha Datos > grupo Obtener y transformar > Desde una tabla o rango y cargaremos esos datos al Editor...

Power Query: Cargar datos desde Nombre definido


Si hubiera sido un rango sin nombre definido asignado, Excel nos hubiera forzado a convertir el rango en Tabla... MUY INTERESANTE!.

Por aprender (o recordar al menos) algo nuevo, aplicaremos un par de Transformaciones a nuestra consulta.

Una acción poco habitual consiste en Transponer los datos cargados. Muy fácil de aplicar desde la ficha Transformar > grupo Tabla > botón Transponer desde la ventana del Editor de Power Query.


En nuestro ejemplo, añadimos el paso comentado y veremos lo siguiente:

Power Query: Cargar datos desde Nombre definido



En el siguiente paso a añadir de nuestra Consulta, obviamente, usaremos la primera fila como encabezados, desde la ficha Inicio > grupo Transformar > botón Usar la primera fila como encabezado

Power Query: Cargar datos desde Nombre definido



Por último añadiremos una columna calculada nueva que incorpore la suma de los distintos conceptos...

En los botones de la ficha Agregar columna > grupo De número encontramos las operaciones matemáticas más habituales que podamos necesitar para operar entre columnas, tales como:
Estadísticas: Suma, Máximo, Mínimo, Mediana, Promedio, Contar valores DISTINCT,...
Estándar: Restar, Multiplicar, Dividir, Porcentaje o Porcentaje de, ...
Científica: Potencia, Valor absoluto, Logaritmos, Exponenciales, Raíces cuadradas.
Trigonométricas: seno, coseno, ...
Redondeo: al alza, a la baja, redondear a un número de decimales
Información: Signo, Par, Impar.

Así seleccionamos las columnas: 'Margen' y 'Impuesto'; y desde la ficha Agregar columna > grupo De número > desplegable Estadísticas > opción Suma.

Power Query: Cargar datos desde Nombre definido



Acabamos cambiando el nombre de esa columna por el de 'Resultado' y Cargamos y cerramos la consulta, devolviéndola en forma de Tabla a la hoja de cálculo.

Power Query: Cargar datos desde Nombre definido



Terminando nuestro ejercicio...

jueves, 9 de abril de 2020

Promedio de 3 mayores con AGREGAR

Hace algunas semanas un lector habitual me preguntaba por la manera de conseguir un promedio condicionado solo de las tres notas más altas:
[...]A ver si me puedes ayudar con esto que en teoría deberia se fácil pero no logro dar con la formula. He simplificado el ejemplo para que sea mas claro. Se trata de hallar el promedio de las 3 mejores notas de cada clase. [...]

Solución que el mismo aportaba posteriormente.


Nuestros datos...

Promedio de 3 mayores con AGREGAR



Me interesa especialmente una de las múltiples posibilidades expuestas en la imagen, donde se emplea la función AGREGAR (ya vimos un ejemplo en el blog).
=AGREGAR(núm_función; opciones; ref1; [ref2]; …)

Esta función poco conocida devuelve un agregado de una lista o rango, empleando algunas de las funciones más habituales según la siguiente codificación:
1-PROMEDIO
2-CONTAR
3-CONTARA
4-MAX
5-MIN
6-PRODUCTO
7-DESVEST.M
8-DESVEST.P
9-SUMA
10-VAR.M
11-VAR.P
12-MEDIANA
13-MODA.UNO
14-K.ESIMO.MAYOR
15-K.ESIMO.MENOR
16-PERCENTIL.INC
17-CUARTIL.INC
18-PERCENTIL.EXC
19-QUARTILCUARTIL.EXC

Las opciones disponibles:
0 u omitido Omitir funciones AGREGAR y SUBTOTALES anidadas
1-Omitir filas ocultas y funciones AGREGAR y SUBTOTALES anidadas
2-Omitir valores de error y funciones AGREGAR y SUBTOTALES anidadas
3-Omitir filas ocultas, valores de error y funciones AGREGAR y SUBTOTALES anidadas
4-No omitir nada
5-Omitir filas ocultas
6-Omitir valores de error
7-Omitir filas ocultas y valores de error.

Una advertencia!!, la función AGREGAR está diseñada para columnas de datos o rangos verticales!!, no está diseñada para filas de datos ni para rangos horizontales.


Comentadas las opciones de los argumentos de AGREGAR veamos una solución al problema expuesto.
Sabiendo que nuestros datos están en el rango A1:C12, según la imagen de más arriba.

Una primera respuesta:
=PROMEDIO(SI(($B$2:$B$12=$E4)*($C$2:$C$12>=AGREGAR(14;6;$C$2:$C$12/($B$2:$B$12=$E4);3));$C$2:$C$12))

donde AGREGAR llama a la función 14-K.ESIMO.MAYOR,
con una opción 6-Omitir valores de error,
que opera sobre el cociente $C$2:$C$12/($B$2:$B$12=$E4), de ahí la opción de 'Omitir valores de error'
(cociente matricial que devolvería para el curso 1º la matriz {7;#¡DIV/0!;#¡DIV/0!;5;4;#¡DIV/0!;#¡DIV/0!;#¡DIV/0!;8;#¡DIV/0!;4})
y finalmente trabaja solo sobre los 3 valores más altos.
Con esto conseguimos determinar cuál es el tercer valor más alto solo de los datos del primer curso!!

El resto de nuestra fórmula opera matricialmente sobre las condiciones necesarias... que en definitiva son dos:
1-datos del curso deseado
2-promedio de las tres notas más altas entre las del curso.


Otra opción no matricial sería emplear PROMEDIO.SI.CONJUNTO y AGREGAR:
=PROMEDIO.SI.CONJUNTO($C$2:$C$12;$B$2:$B$12;E14;$C$2:$C$12;">="&AGREGAR(14;6;$C$2:$C$12/($B$2:$B$12=E14);3))

con igual resultado y similar interpretación.


De forma similar, y empleando directamente la función K.ESIMO.MAYOR:
=PROMEDIO(SI($B$2:$B$12=E9;SI($C$2:$C$12>=K.ESIMO.MAYOR(SI($B$2:$B$12=E9;$C$2:$C$12;0);3);$C$2:$C$12)))

O una última... donde insertamos una función desbordada como FILTRAR
=PROMEDIO(SI($B$2:$B$12=E14;SI($C$2:$C$12>=K.ESIMO.MAYOR(FILTRAR($C$2:$C$12;$B$2:$B$12=$E14);3);$C$2:$C$12)))


Opción 5 (añadida al post posteriormente)
La siguiente fórmula ejecutada matricialmente:
=PROMEDIO(K.ESIMO.MAYOR(SI($B$2:$B$12=E24;$C$2:$C$12);{1;2;3}))

Promedio de 3 mayores con AGREGAR


Seguro que existen muchas más opciones para dar solución al problema, pero el uso de AGREGAR aporta un punto diferente...

martes, 7 de abril de 2020

Power Query: Coincidencias-Diferencias entre listas

Veremos hoy algunas formas, empleando Power Query, de detectar elementos coincidentes entre dos listas, así como elementos diferentes entre nuestras listas.

Power Query: Coincidencias-Diferencias entre listas



En primer lugar partiremos de nuestras dos listas de países (TblUNO y TblDOS) en los rangos B2:B10 y D2:D9 de la imagen anterior.

Cargaremos ambas tablas al Editor de Power Query en modo Solo conexión...


En primer lugar para detectar los elementos coincidentes, al mismo tiempo, en ambas tablas, nos iremos a la consulta de la TblUNO y la combinaremos con la consulta de la TblDOS empleando un tipo de combinación: Interna (todas las filas coincidentes)

Power Query: Coincidencias-Diferencias entre listas


Este tipo de 'join' entre consultas devuelve únicamente elementos que existan en ambas tablas... justo lo que buscamos.

Otra información relevante sería determinar qué elementos de la TblUNO no están en TblDOS.
Para ello combinaremos de forma similar ambas tablas, pero eligiendo el tipo de combinación: Anti izquierda (solo filas de la primera)

Power Query: Coincidencias-Diferencias entre listas


Lo que nos proporciona este tipo de join entre tablas son aquellos elementos de la primera lista sin coincidencia en la segunda.

Una tercera opción sería la inversa a la anterior, esto es, elementos de la segunda tabla que no encuentren coincidencia en la primera.
El asunto es simple, montamos una combinación entre ambas con un tipo: Anti derecha (solo filas de la segunda)

Power Query: Coincidencias-Diferencias entre listas


Con este último tipo de join entre tablas conseguimos extraer los elementos de la segunda tabla que no tengan coincidencia en la primera.

Estas tres maneras de realizar combinaciones nos reportan una información relevante a la hora de comparar listados, y sin duda, al usar el asistente de combinación, son de un uso muy simple.

Una segunda forma alternativa de trabajar y obtener los mismos resultados es emplear funciones M, en concreto:
List.Intersect
List.Difference


Para ello duplicaremos (para no interferir con el trabajo previo) nuestras consultas de las TblUNO y TblDOS, y a cada una de ellas les aplicaremos desde el editor de PowerQuery la acción de Convertir en lista (ficha Transformar > grupo Cualquier columna > botón Convertir en lista)

Power Query: Coincidencias-Diferencias entre listas



No olvides 'convertir en lista' la segunda de las consultas!

En mi caso, he renombrado mis nuevas consultas (mis dos nuevas listas) como TblUNO_M2 y TblDOS_M2.

El siguiente paso para obtener nuestros tres listados consiste en ir añadiendo 'Consultas en blanco' (desde el Editor iremos a la ficha Inicio > grupo Nueva consulta > desplegable Nuevo origen > Otros orígenes > Consulta en blanco).

Para obtener los elementos existentes en ambos listados escribiremos en la barra de fórmula de la nueva consulta en blanco:
= List.Intersect({TblUNO_M2,TblDOS_M2})

fijémosnos en que ambos listados están entre llaves!!.

También podríamos haber abierto el Editor avanzado y haber escrito:
let
    Origen = List.Intersect({TblUNO_M2,TblDOS_M2})
in
    Origen


Para encontrar los elementos de la primera lista que no se encuentren en la segunda generaremos una nueva Consulta en blanco, y en la barra de fórmula escribiremos:
= List.Difference(TblUNO_M2,TblDOS_M2)

donde es importante qué lista escribimos en primer lugar... en este caso, al indicar primero 'TblUNO_M2' implícitamente decimos que extraeremos los elementos de la primera lista diferentes de la segunda...


Como consecuencia de lo anterior, para recuperar los elementos de la segunda lista que no se encuentren en la primera generaremos una nueva Consulta en blanco, y en la barra de fórmula escribiremos:
= List.Difference(TblDOS_M2,TblUNO_M2)


Consiguiendo así los mismos resultados que con el asistente de combinación, tal como veíamos en la primera imagen.

miércoles, 1 de abril de 2020

Conectar Power Query con OneDrive

En estos días tan aciagos que nos ha tocado vivir es muy habitual que las empresas favorezcan el teletrabajo, por lo que el uso de herramientas para compartir documentos en la nube se están haciendo extensivo.

Hoy hablaré de cómo crear una Consulta con Power Query que recupere información de un fichero guardado en OneDrive, y que este fichero funcione en cualquier equipo.


Obviamente necesitamos una cuenta de Office.

Supongamos tenemos un fichero de trabajo guardado en nuestra cuenta de OneDrive, fichero que contiene una tabla de datos...

Conectar Power Query con OneDrive



No son importantes los datos, pero sí la ruta o el enlace de este fichero!!.
Para conocer con exactitud esta ruta entraremos en el fichero, iremos a la ficha Archivo > Información > Copiar ruta de acceso

Conectar Power Query con OneDrive


En mi caso, tras 'copiar ruta de acceso' esto es lo que obtengo:
https://ircalcerrada-my.sharepoint.com/personal/iromero_ircalcerrada_onmicrosoft_com/Documents/DATOS/ejemOneDrive.xlsx?web=1

Muy importante!!, para los pasos siguientes debemos eliminar la parte final '?web=1', esto es, solo nos quedaremos con:
https://ircalcerrada-my.sharepoint.com/personal/iromero_ircalcerrada_onmicrosoft_com/Documents/DATOS/ejemOneDrive.xlsx

es decir, hasta la extensión del fichero de trabajo.


Podemos cerrar este fichero con los datos.

Abriremos el fichero final de trabajo donde crearemos nuestra Consulta de Power Query.

Navegaremos hasta la ficha Datos > grupo Obtener y transformar > desplegable Obtener datos > opción Configuración del origen de datos...

Conectar Power Query con OneDrive



En la ventana de Configuración buscaremos la ruta con la que comienza la ubicación de nuestro fichero de datos origen:
https://ircalcerrada-my.sharepoint.com/personal/iromero_ircalcerrada_onmicrosoft_com/Documents/DATOS/ejemOneDrive.xlsx
en mi ejemplo buscaré:
https://ircalcerrada-my.sharepoint.com/

Conectar Power Query con OneDrive



Estos orígenes de datos se cargan automáticamente al intentar realizar conexiones sobre ellos... si no te aparece en primer término, trata de conectar con Power Query desde la web, y vuelve a la opción anterior.

Volviendo a la ventana de Configuración de orígenes de datos con el origen seleccionado presionaremos el botón de 'Editar permisos...', lo que abrirá una nueva ventana donde gestionar las credenciales de acceso y el nivel de Privacidad.

Conectar Power Query con OneDrive


Entraremos a Editar las credenciales.

Conectar Power Query con OneDrive


Aquí optaremos por un sistema de acceso u otro según el caso (a probar).
Desde mi punto de vista, si nos movemos en entornos de trabajo, lo más seguro es emplear el credencial (usuario) de la Cuenta de organización.
En otros casos basta con Seleccionar la opción de Anónimo.. o empleando el perfil de Windows, etcétera.
Tras Guardar los credenciales, cerramos estas ventanas.


Solo nos queda entrar en la ficha Datos > grupo Obtener y transformar > desplegable Obtener datos > Desde Otras fuentes > Desde la Web, abriéndose una ventana que nos solicita una URL... campo donde escribiremos nuestra ruta:
https://ircalcerrada-my.sharepoint.com/personal/iromero_ircalcerrada_onmicrosoft_com/Documents/DATOS/ejemOneDrive.xlsx

Conectar Power Query con OneDrive



Gestionamos la recuperación de datos normalmente:

Conectar Power Query con OneDrive



Cargamos y cerramos para obtener los datos... y listo. Nuestra conexión está preparada... cualquier actualización sobre el fichero guardado en OneDrive lo visualizaremos con una Actualización de datos.