Días atrás tuve la necesidad de 'limpiar' un poco mi disco duro de almacenamiento... estaba marcado en rojo, y el espacio disponible evitaba incluso una sencilla operación de desfragmentación...
Obviamente el Explorador de archivos de Windows NO MUESTRA el tamaño de las carpetas, salvo yendo una por una mostrando sus propiedades, lo cual es largo y tedioso (sobre todo cuando las estructuras de carpetas-subcarpetas es larga y profunda).
Así pues, aplicativos de terceros aparte, me acordé de una posibilidad que ofrece Power Query respecto a los Atributos de los archivos: el tamaño (Size) de los ficheros.
Y en esto consiste la entrada de hoy. Veremos como con unos sencillos pasos desarrollados en una consulta de Power Query, podemos analizar el tamaño de nuestras carpetas.... para posteriores acciones, como eliminar o borrar el contenido de algunas de ellas...
Por tanto, el primer paso consistirá en navegar en un libro vacío de Excel hasta la ficha Datos > grupo Obtener y transformar > Obtener datos > Desde un archivo > Desde una carpeta.
Se abrirá una ventana donde indicaremos cuál es la ruta a analizar (desde una carpeta en concreto, a todo un disco duro raiz).
En mi ejemplo analizaré una carpeta en concreto:
F:\excelforo\PowerAutomate
Al Aceptar veremos una pantalla donde se listan todos los ficheros contenidos en todas las carpetas y subcarpetas dependientes de la anterior indicada.
Incluso antes de presionar 'Transformar datos' ya previsualizamos la columna sobre la que trabajaremos: Atributtes
Al hacer clic en 'Transformar datos' accederemos al editor de consultas de Power Query donde grabaremos los siguientes pasos:
Paso uno: Expandir la columna 'Attributes' y marcar únicamente 'Size'
Paso dos: Quitamos otras columnas excepto la anterior-Size- y la columna que muestra la ruta de la carpeta -Folder path-
Paso tres: Duplicamos la columna anterior-Size- y aprovechamos para renombrarla como 'bytes' (que es la unidad de medida mostrada).
Paso cuatro: Transformamos la columna de 'Size' dividiéndola entre 1.048.576 (=1024 x 1024). Resultado de pasar de bytes a Mb.
Paso cinco: Agrupamos por la columna 'Folder path' y resumimos sumando la columna Size y la de bytes.
Paso seis: Duplicamos la columna 'Folder path'.
Paso siete: Dividimos la columna 'Folder path' por el delimitador o separador \.
Esto nos permitirá, posteriormente al trabajar con una tabla dinámica sobre la consulta generada, gestionar la jerarquía de la estructura de carpetas y subcarpetas.
Paso ocho y último: Reordenamos las posiciones de las columnas...
El código generado con los pasos anteriores sería:
El resultado...
La tabla dinámica se ha generado a partir del resultado de la consulta, llevando los campos:
-Área de filtros: Campos Folder Path.1, Folder Path.2
-Área de filas: Campos Folder Path.3, Folder Path.4
-Área de valores: Campos Mb, bytes
Se puede comprobar con las propiedades extraídas del explorador de Windows que la cantidades corresponden...
Solo quedará tomar las decisiones de qué borrar y que mantener... pero eso es otra historia.
Obviamente el Explorador de archivos de Windows NO MUESTRA el tamaño de las carpetas, salvo yendo una por una mostrando sus propiedades, lo cual es largo y tedioso (sobre todo cuando las estructuras de carpetas-subcarpetas es larga y profunda).
Así pues, aplicativos de terceros aparte, me acordé de una posibilidad que ofrece Power Query respecto a los Atributos de los archivos: el tamaño (Size) de los ficheros.
Y en esto consiste la entrada de hoy. Veremos como con unos sencillos pasos desarrollados en una consulta de Power Query, podemos analizar el tamaño de nuestras carpetas.... para posteriores acciones, como eliminar o borrar el contenido de algunas de ellas...
Por tanto, el primer paso consistirá en navegar en un libro vacío de Excel hasta la ficha Datos > grupo Obtener y transformar > Obtener datos > Desde un archivo > Desde una carpeta.
Se abrirá una ventana donde indicaremos cuál es la ruta a analizar (desde una carpeta en concreto, a todo un disco duro raiz).
En mi ejemplo analizaré una carpeta en concreto:
F:\excelforo\PowerAutomate
Al Aceptar veremos una pantalla donde se listan todos los ficheros contenidos en todas las carpetas y subcarpetas dependientes de la anterior indicada.
Incluso antes de presionar 'Transformar datos' ya previsualizamos la columna sobre la que trabajaremos: Atributtes
Al hacer clic en 'Transformar datos' accederemos al editor de consultas de Power Query donde grabaremos los siguientes pasos:
Paso uno: Expandir la columna 'Attributes' y marcar únicamente 'Size'
Paso dos: Quitamos otras columnas excepto la anterior-Size- y la columna que muestra la ruta de la carpeta -Folder path-
Paso tres: Duplicamos la columna anterior-Size- y aprovechamos para renombrarla como 'bytes' (que es la unidad de medida mostrada).
Paso cuatro: Transformamos la columna de 'Size' dividiéndola entre 1.048.576 (=1024 x 1024). Resultado de pasar de bytes a Mb.
Paso cinco: Agrupamos por la columna 'Folder path' y resumimos sumando la columna Size y la de bytes.
Paso seis: Duplicamos la columna 'Folder path'.
Paso siete: Dividimos la columna 'Folder path' por el delimitador o separador \.
Esto nos permitirá, posteriormente al trabajar con una tabla dinámica sobre la consulta generada, gestionar la jerarquía de la estructura de carpetas y subcarpetas.
Paso ocho y último: Reordenamos las posiciones de las columnas...
El código generado con los pasos anteriores sería:
let Origen = Folder.Files("F:\excelforo\PowerAutomate"), Se_expandió_Attributes = Table.ExpandRecordColumn(Origen, "Attributes", {"Size"}, {"Attributes.Size"}), Otras_columnas_quitadas = Table.SelectColumns(Se_expandió_Attributes,{"Attributes.Size", "Folder Path"}), Columna_duplicada1 = Table.DuplicateColumn(Otras_columnas_quitadas, "Attributes.Size", "bytes"), Columna_dividida = Table.TransformColumns(Columna_duplicada1, {{"Attributes.Size", each _ / 1048576, type number}}), Filas_agrupadas = Table.Group(Columna_dividida, {"Folder Path"}, {{"Mb", each List.Sum([Attributes.Size]), type number},{"bytes", each List.Sum([bytes]), type number}}), Columna_duplicada = Table.DuplicateColumn(Filas_agrupadas, "Folder Path", "Folder Path."), Dividir_columna_por_delimitador = Table.SplitColumn(Columna_duplicada, "Folder Path", Splitter.SplitTextByDelimiter("\", QuoteStyle.Csv), {"Folder Path.1", "Folder Path.2", "Folder Path.3", "Folder Path.4", "Folder Path.5", "Folder Path.6", "Folder Path.7"}), Columnas_reordenadas = Table.ReorderColumns(Dividir_columna_por_delimitador,{"Folder Path.", "Folder Path.1", "Folder Path.2", "Folder Path.3", "Folder Path.4", "Folder Path.5", "Folder Path.6", "Folder Path.7", "Mb", "bytes"}) in Columnas_reordenadas
El resultado...
La tabla dinámica se ha generado a partir del resultado de la consulta, llevando los campos:
-Área de filtros: Campos Folder Path.1, Folder Path.2
-Área de filas: Campos Folder Path.3, Folder Path.4
-Área de valores: Campos Mb, bytes
Se puede comprobar con las propiedades extraídas del explorador de Windows que la cantidades corresponden...
Solo quedará tomar las decisiones de qué borrar y que mantener... pero eso es otra historia.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.