miércoles, 11 de agosto de 2021
Experimento con fechas en Microsoft Excel
martes, 10 de agosto de 2021
Tamaño de ficheros en Microsoft Excel según el número de decimales almacenado.
Ayer demostraba que Microsoft Excel almacena más eficientemente los datos cuando hay muchos datos repetidos.
Hoy veremos otra faceta del motor de almacenamiento de Microsoft Excel que también afecta al tamaño del fichero, y por tanto a la capacidad de procesamiento de los datos.
En este caso analizaremos la repercusión del número de decimales en el tamaño del fichero.
Para ello partimos de un fichero con una única columna de datos, en la que introducimos la fórmula ALEATORIO ().
Esta fórmula genera un número decimal aleatorio entre cero y uno, con el máximo de decimales que gestiona Excel, esto es 16 decimales.
El resto de los ficheros se ha generado usando la función REDONDEAR () para obtener una versión con menos decimales de los valores originales en la columna B.
Finalmente elimino la columna B, dejando solo la columna A.
También cambio el título de la columna, para indicar el número de decimales.
Sin embargo no modifico el número de decimales que se muestran para que se aprecie el redondeo.
En la siguiente imagen muestro el fichero con 10 decimales.
Como podéis ver en la imagen, el tamaño se reduce radicalmente a medida que se reduce el número de decimales.
La versión original del fichero, tenía 16 decimales y pesaba 18MB.
La versión de 10 decimales reduce su tamaño hasta los 16 MB.
En la versión de 5 decimales nos quedamos en 13 MB.
Es importante entender que el valor almacenado por Microsoft Excel es el que se muestra en la barra de fórmulas, no en las celdas.
Como se puede apreciar en esta imagen, en el valor resaltado en rojo, no se tienen en cuenta los ceros decimales a la derecha.
Versión para 3 decimales, que pesa 11 MB.
Y finalmente la versión con 2 decimales que se queda en algo menos de 9 MB.
Aunque aparentemente está reducción del tamaño se deba a la reducción del número de decimales, no es esa la razón de que los ficheros ocupen menos.
La verdadera razón es la misma que veíamos ayer, a menos valores distintos menos valores realmente almacena el motor de Microsoft Excel.
Solo hay que pensar cuántos valores entre 0 y 1 con dos decimales existen y nos daremos cuenta de que, el máximo número de elementos distintos que hay en el fichero de dos decimales, es de 1000 elementos distintos. Razón por la cual es más fácil almacenar los datos y requieren menos tamaño.
Esto nos demuestra que cuando trabajemos con decimales deberíamos tener claro cuál es el máximo número decimales que nos interesa almacenar ya que podremos ahorrar una cantidad enorme de espacio y facilitar el procesamiento del fichero.
Este comportamiento que hemos visto en Microsoft Excel es aplicable también a Power BI, en el cual adquiere una especial importancia ya que el tamaño máximo del fichero de Power BI, es de 1GB.
lunes, 9 de agosto de 2021
Reducir tamaño en Microsoft Excel según datos guardados
Voy a explicar la relación entre los datos almacenados en una columna de Microsoft Excel y el tamaño del fichero generado.
Usaremos como ejemplo dos ficheros de Microsoft Excel en formato XLSX.
En ambos cubriremos de datos toda la columna A.
En el primero, escribiremos el número 1 en todas las celdas.
En el segundo escribiremos en cada celda el número correspondiente a su fila.
Microsoft Excel usa un motor de análisis en memoria para gestionar los datos.
Para ello implementa técnicas de compresión para reducir lo datos a almacenar.
La razón de compresión depende, sobre todo, del número de valores únicos en cada columna, ya que se utiliza un sistema de diccionarios que almacena cada valor y los índices correspondientes.
De forma que cuanta mayor variedad de datos, mayor será el tamaño necesario para almacenarlos, y por tanto mas memoria será necesaria para procesarlos.
En la captura podéis comprobar la diferencia de tamaño de ambos ficheros.
Habíamos visto en otra publicación que cambiando el formato a XLSB podíamos ahorrar tamaño.
Eso es correcto, pero en este caso la diferencia en porcentaje de tamaño aún es mayor entre ambos ficheros.
En el caso del formato XLSX es necesario un 54% más de tamaño para almacenar datos distintos que para un único dato repetido.

domingo, 8 de agosto de 2021
Cargar fechas en formato Americano a través de Power Query sin modificar la configuración regional de Windows
Uno de los defectos de Microsoft Excel, es que comparte configuración con el sistema operativo Windows.
Cómo ejemplo, indicar que para cambiar el separador de listas por defecto en Microsoft Excel, es necesario modificarlo en el sistema operativo, lo que afectará a todos los programas que dependan de ese valor.

Sin embargo, veremos que en Power Query es posible realizar ese cambio sin afectar a ningún otro programa.

Partimos del ejemplo de ayer, en el cual se cargan todas las fechas como textos.
Caso que podíamos confirmar al aplicar un filtro y ver que las fechas no se acumulaban.
Dn este caso, al ver que al cambiar el tipo de dato a fecha en Power Query, no vamos a proceder a eliminar errores.
En su lugar haremos que Power Query detected las fechas correctamente.
A diferencia de en Excel, en Power Query sin que es posible indicar la configuración regional de los datos sin alterar la configuración del sistema operativo.
Para ello dentro del menú contextual del botón derecho, en la opción "Cambiar tipo" accederemos a la última opción "Usar configuración regional".
A través de esta opción se nos muestra una ventana en la que se nos solicitan dos datos. El tipo de dato, y la configuración regional del dato.
Para el ejemplo de la fecha en formato MMDDAAAA, seleccionamos en tipo de datos fecha y en configuración regional indicamos Inglés (Estados Unidos).
Solo con ese cambio las fechas se cargan correctamente.
La instrucción en lenguaje M es la siguiente.
Cargamos los datos directamente en Excel.
Aplicamos un filtro y en esta ocasión comprobamos que se acumulan correctamente.

Con esta opción se corrige el problema que tuvimos al importar los datos directamente en Excel.
sábado, 7 de agosto de 2021
Peligro a la hora de eliminar errores en Power Query
Ayer importabamos un listado de fechas en formato MMDDAAAA a Microsoft Excel, mediante Power Query.
Veíamos como se importaban como texto, al analizar Power Query las mil primeras líneas y entender que el único formato común era el texto.
Recordemos que al aplicar un filtro no se acumulaban ya que no se reconocían como fechas.
Es posible corregir el tipo de datos indicándolo manualmente en Power Query.
Botón derecho, Cambiar tipo, y seleccionar Fecha.
Al cambiar el tipo de dato, aplica el formato de a los que contienen datos válidos para ese formato, el resto aparecen como error.
Recordemos que estamos trabajando con una hoja de cálculo de Microsoft Excel configurada en castellano para España.
En Power Query existe la posibilidad desde el grupo "Reducir filas" de "Eliminar errores".
Esta opción elimina la fila completa en la que se detecta el error.
Automáticamente desaparecen todas las menciones al error.

Cargamos los datos en Excel, y aparentemente todo va bien.
Ha cambiado el alineado, mostrando que ahora se tratarán como números.
Y si aplicamos un filtro veremos que todas las fechas se agrupan en meses.
Cargamos los datos a Excel, y aunque aparentemente se cargan correctamente, posñdemos apreciar que solo se han cargado 48.
Si se han cargado 48 filas de las 102 originales, esto significa que se ha cargado me osndel 50 % de las filas.
Podría no ser muy importante si no resultase que las fechas cargadas son incorrectas.
Para Power Query los herrores eran fechas que indicaban meses que no existen, sin embargo que una fecha tenga el formato correcto no significa que represente el valor original.
En este caso, de las fechas que se cargan, solo son correctas aquellas en las que coinciden el número del día con el número del mes.
El resto son incorrectas.
Es muy importante saber que realmente lo que se nos muestra como error si lo sea.
Ante un error antes de eliminarlo directamente es mejor analizar de donde ha surgido.