LuckyTemplates entre fechas solución de horas de trabajo

LuckyTemplates entre fechas solución de horas de trabajo

En el blog de hoy, demostraré un enfoque del Desafío Start Stop de Access Analytic donde, usando LuckyTemplates, se calculará el total de horas de trabajo entre fechas. Puedes ver el video completo de este tutorial en la parte inferior de este blog .

La tarea es calcular el número total de horas de un miembro del personal en cada mes y día. Presenté fechas de inicio y finalización que pueden cruzar meses y tener en cuenta el estado para tratar posibles errores tipográficos. 

LuckyTemplates entre fechas solución de horas de trabajo

Tabla de contenido

Conjunto de datos para las horas de trabajo entre fechas de LuckyTemplates

Vayamos al editor de Power Query. 

Aquí están nuestros datos para este desafío. Tenemos una tabla con columnas para el nombre del personal, la fecha de inicio, la hora de inicio, la fecha de finalización, la hora de finalización y el estado.

LuckyTemplates entre fechas solución de horas de trabajo

Filtrar las filas

Comencemos seleccionando las filas en función de su estado, y el editor de consultas puede ayudarnos con esta lógica. Haga clic en la flecha desplegable junto a Estado. Seleccione Filtros de texto y elija No comienza con. 

LuckyTemplates entre fechas solución de horas de trabajo

En la ventana Filas de filtro que aparecerá, escriba "e". Luego haga clic en Aceptar .

LuckyTemplates entre fechas solución de horas de trabajo

No pasará nada todavía y eso está bien porque escribimos una "e" minúscula y el "Excluir" en nuestros datos que comienza con una "E" mayúscula.

Para arreglar eso, usaremos el tercer parámetro opcional de Text.StartsWith . En la barra de fórmulas, vaya al final de la función Text.StartsWith. Agregue una coma e ingresemos nuestro Comparer.OrdinalIgnoreCase. Haga clic en la marca de verificación y eso debería eliminar las filas Excluir .

LuckyTemplates entre fechas solución de horas de trabajo

Por supuesto, podríamos tener a alguien que haya escrito erróneamente "Excluir" sin una "E" inicial. En ese caso, podemos crear alguna lógica adicional para acompañar la situación. 

Podemos probar si la palabra no incluye una "X" extendiendo nuestra función y usando Text.Contains . Para hacer eso, agregue o Text.Contains ([Estado], "x", Comparer.OrdinalIgnoreCase .

Tenga en cuenta que, en comparación con la primera cláusula, reemplazamos "e" con una "x". Seguimos ignorando el caso y colocamos un conjunto de paréntesis alrededor de nuestras dos cláusulas. Haga clic en la marca de verificación y deberíamos obtener una tabla sin filas que contengan el estado Excluir o Xcluir .

LuckyTemplates entre fechas solución de horas de trabajo

Agregar una columna personalizada

Vayamos ahora a la parte principal de este desafío. Agregaremos una columna personalizada usando la interfaz de usuario y luego cambiaremos al editor. 

Comience con el ícono de la mini mesa en la esquina superior izquierda de la mesa. Haga clic en él y en el menú desplegable, seleccione Agregar columna personalizada

LuckyTemplates entre fechas solución de horas de trabajo

En este punto, solo nos interesa traer los datos que necesitaremos más adelante. Y debido a que trabajaremos con múltiples campos, creemos un registro utilizando los inicializadores de registros, representados entre corchetes. 

Vamos a crear variables y asignar las columnas disponibles. Comience escribiendo SD , que igualaremos a la Fecha de inicio. Podemos hacerlo haciendo clic en Fecha de inicio en la columna de la derecha.

Haremos lo mismo para las variables ST, ED y ET que se asignarán a Hora de inicio, Fecha de finalización y Hora de finalización , respectivamente. Luego, cierre el registro con un corchete de cierre. Haga clic en Aceptar.

LuckyTemplates entre fechas solución de horas de trabajo

Se agregará a la tabla una columna personalizada con los registros. Haga clic en el espacio en blanco junto a Grabar y se abrirá un panel de vista previa. Esto traerá todos los valores de esta fila.

LuckyTemplates entre fechas solución de horas de trabajo

Horas de trabajo entre fechas de LuckyTemplates: las variables

Luego podemos formatear nuestras variables a través de la ventana del Editor avanzado . Así es como debería verse la ventana del Editor avanzado. 

LuckyTemplates entre fechas solución de horas de trabajo

Luego, coloquemos nuestras variables en nuevas líneas separadas.

LuckyTemplates entre fechas solución de horas de trabajo

Ahora, podemos expandir la lógica que necesitamos. Entonces, en lugar de un registro, también podríamos usar una expresión let anidada aquí. Tenga en cuenta que cualquiera de ellos funcionará porque tenemos múltiples variables o nombres de campo con valores asignados a ellos.

Nuestra fecha de inicio está escrita actualmente como un valor de texto y necesitamos transformarla en un formato de fecha adecuado. Para hacer eso, envuelva la función Date.FromText a su alrededor. 

LuckyTemplates entre fechas solución de horas de trabajo

Para la hora de inicio , que también tiene formato de cadena, debemos convertirla en un número. Luego, podemos dividirlo por cien y redondearlo para eliminar cualquier lugar decimal. 

Usando la función Number.From , divida nuestro valor de Fecha de inicio por 100 . Luego, envuélvalos dentro de la siguiente función, Number.Round , y agregue , 0 al final para redondear sin lugares decimales. 

LuckyTemplates entre fechas solución de horas de trabajo

Para Fecha de finalización y Hora de finalización, simplemente copiaremos las mismas funciones que teníamos en Fecha de inicio y Hora de inicio respectivamente, y las reemplazaremos con las variables apropiadas.

LuckyTemplates entre fechas solución de horas de trabajo

Una vez que las variables estén formateadas correctamente, cree otro campo en nuestro registro para alguna lógica adicional. Cree una nueva línea presionando Enter. 

Necesitamos construir una lista de fechas desde la primera fecha hasta la fecha de finalización. Llamaremos a esas fechas LD y usaremos la función List.Dates

El primer parámetro de esta función es el inicio como fecha que sería nuestra SD. Luego, quiere un conteo como número o la diferencia entre la fecha de inicio y la fecha de finalización. Podemos obtener eso usando la función Number.From seguida de ( ED – SD) + 1 . Tenga en cuenta que el "+1" no se muestra en los siguientes conjuntos de capturas de pantalla, pero debería haber un +1 .

El tercer parámetro se llama el paso como duración y queremos un incremento de un día. Podemos obtener eso usando Duration.From (1). 

LuckyTemplates entre fechas solución de horas de trabajo

Hemos creado una lista con fechas desde la primera fecha de inicio hasta la fecha de finalización. Lo que queremos a continuación es crear una lista de tiempos que vaya junto con eso. 

Llamemos a este LT para tiempos de lista. LT puede tener un período de un solo día, lo que requiere una lógica ligeramente diferente que si abarca varios días. Así que eso es algo para lo que tenemos que crear una condición. 

Queremos que la condición diga "si nuestra fecha de inicio es la misma que nuestra fecha de finalización, entonces la hora de finalización menos la hora de inicio". Los resultados deben estar en una lista de formato, por lo que usamos el inicializador de lista representado por { }

LuckyTemplates entre fechas solución de horas de trabajo

Ahora, si tenemos un intervalo de fechas que abarca varios días, la primera fecha será 24 menos la hora de inicio. Agregaremos esto a nuestra condición como la declaración else . Nuevamente, formatee eso como una lista usando las llaves.

LuckyTemplates entre fechas solución de horas de trabajo

En este punto, no hemos tenido en cuenta los otros días completos, por lo que usaremos el símbolo de ampersand (&) para agregar varias listas. Para cada día completo, cree una lista con el valor 24 que representa las 24 horas que tenemos en un día. Usaremos List.Repeat para eso. 

Con la función List.Repeat , cree una lista que contenga 24 y repítala varias veces contando la cantidad de días en LD . Para lograr eso, use List.Count (LD)   y luego reste 2 porque tenemos una lista separada para nuestra fecha de inicio y crearemos otra lista para la hora de finalización. 

En esencia, esto creará una lista con solo 24 horas para cada día completo. 

LuckyTemplates entre fechas solución de horas de trabajo

Para el tiempo final, podemos agregarlo nuevamente como una lista usando el signo Y, luego, usando los inicializadores de la lista, llamemos al ET. 

LuckyTemplates entre fechas solución de horas de trabajo

Hasta ahora, tenemos dos grandes listas, una lista de fechas y una lista de horas, cuyas longitudes son iguales entre sí. A partir de esas dos listas, podemos construir una sola tabla. 

En una nueva línea, cree otra variable para la tabla a la que llamaremos t y use la función Table.FromColumns . Esta función requiere listas como lista y usaremos nuestro LD. 

Nuestro LD contiene fechas individuales desde la fecha de inicio hasta la fecha de finalización. Podemos transformar esa lista de fechas al valor de fecha de fin de mes pasando LD y llamando a la función Date.EndOfMonth . Luego, en la siguiente línea, obtengamos también  nuestro LT .

LuckyTemplates entre fechas solución de horas de trabajo

Presione Enter para crear otra línea y establecer nuestra tabla como tabla de tipo . Nuestra tabla tendrá dos columnas, la primera columna será una columna de fecha. Por lo tanto, cree una columna de fecha y llame a la función Date.Type .

La segunda columna será nuestra columna Horas y será un número entero. Por lo tanto, crearemos una columna Hrs y llamaremos a Int8.Type.

LuckyTemplates entre fechas solución de horas de trabajo

Tenemos el corchete de cierre para cerrar nuestro registro y un paréntesis de cierre para cerrar nuestra función Table.AddColumn . Haga clic en Listo y obtendremos una lista de registros en una columna personalizada. 

LuckyTemplates entre fechas solución de horas de trabajo

Nuevamente, haga clic en el espacio en blanco al lado de cada Registro y la tabla debería abrirse en la parte inferior de la pantalla. 

LuckyTemplates entre fechas solución de horas de trabajo

Observe que tenemos nuestra tabla t en la última fila. Intentemos profundizar en uno de los Registros. Haga clic derecho en el primer resultado y Agregar como nueva consulta

LuckyTemplates entre fechas solución de horas de trabajo

Obtendremos el mismo resumen que antes y si hacemos clic en la Tabla , deberíamos obtener nuestros valores de Fecha y Hora .

LuckyTemplates entre fechas solución de horas de trabajo

Pero estamos interesados ​​principalmente en la tabla de salida final. Para centrarnos en eso, eliminemos la consulta de ayuda haciendo clic con el botón derecho en Personalizar y eligiendo Eliminar . Confirme haciendo clic en Eliminar en la ventana emergente.

LuckyTemplates entre fechas solución de horas de trabajo

Una vez eliminado, podemos volver a nuestra consulta inicial y nuevamente hacer clic en el espacio en blanco al lado de Grabar. Mostrará los mismos resultados que antes. Pero esta vez, expandamos la barra de fórmulas y llamemos [t] junto a nuestros corchetes de cierre.

LuckyTemplates entre fechas solución de horas de trabajo

En la columna Personalizado, podemos ver que cada Registro se cambia a Tabla

LuckyTemplates entre fechas solución de horas de trabajo

Horas de trabajo entre fechas de LuckyTemplates: Proyección

De la tabla que estamos viendo, solo hay dos columnas de interés: el nombre del personal y nuestra columna personalizada. Podemos usar la proyección para retener esas dos columnas solas de esta tabla. 

Vaya a la barra de fórmulas y, junto a nuestro paréntesis de cierre, seleccione los campos que deseamos conservar colocándolos entre corchetes. Luego presione la marca de verificación.

LuckyTemplates entre fechas solución de horas de trabajo

Deberíamos obtener este resultado.

LuckyTemplates entre fechas solución de horas de trabajo

Podemos expandir la tabla anidada haciendo clic en los iconos de flecha  al lado de Personalizado . Desmarque Usar el nombre de la columna original como prefijo y haga clic en Aceptar.

LuckyTemplates entre fechas solución de horas de trabajo

Nuestra tabla debería aparecer así.

LuckyTemplates entre fechas solución de horas de trabajo

Horas de trabajo entre fechas de LuckyTemplates: valores agregados

Todo lo que queda por hacer ahora es agregar estos valores. Para hacerlo, seleccione la columna Nombre del personal y vaya a Transformar. 

En la ventana emergente, elija Horas en la columna Valores porque es lo que queremos agregar. Luego, seleccione Suma en Función de valor agregado . Luego haga clic en Aceptar.

LuckyTemplates entre fechas solución de horas de trabajo

Nuestro resultado final se verá así. 

LuckyTemplates entre fechas solución de horas de trabajo


Creación de una tabla de fechas en LuckyTemplates La forma más rápida posible
Comparación de tiempo para tablas de fechas no estándar en LuckyTemplates
Valor de fecha y hora: cómo quitar segundos

Conclusión

En este blog, ha visto un enfoque del Desafío Start Stop de Access Analytic. Aprendió cómo calcular el número total de horas trabajadas por cada miembro del personal en un mes y cómo lidiar con posibles errores tipográficos en sus datos. 

Con esta técnica y LuckyTemplates, las horas de trabajo entre fechas se pueden calcular fácilmente en su propia organización, o como una práctica para profundizar sus conocimientos y habilidades de LuckyTemplates. 


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