El miembro solicitó una forma de convertir su campo Fecha de entrega confirmada , que tiene un formato de año, semana y día de la semana, y transformarlo en un campo de fecha.
En su ejemplo, el miembro explica que el código 20145 debe convertirse a 2020-04-03. Entonces, a partir de esto, podemos concluir que los primeros dos dígitos corresponden al año, los siguientes dos dígitos corresponden al número de la semana, mientras que el último dígito corresponde al día de la semana.
Ahora que ya tenemos una idea de cómo abordar la consulta, comencemos.
Separar el código para obtener un valor de fecha adecuado
Para facilitar nuestro trabajo, carguemos nuestros datos en el Editor de Power Query .
Lo primero que noté cuando cargué los datos en Power Query es que inmediatamente hizo un paso de tipo de cambio, como se muestra a continuación.
Como no necesitamos esto, podemos eliminar este paso haciendo clic en el botón X al lado.
Ahora, comencemos a dividir el código en columnas separadas para el año, la semana y el día de la semana.
Columna de año
Como mencioné anteriormente, los primeros dos dígitos del código corresponden al año del valor de la fecha.
Para agregar una columna separada para el año, debemos asegurarnos de que la columna Fecha de entrega confirmada esté seleccionada. Para hacer esto, vaya a la pestaña Agregar columna , haga clic en Extraer y luego seleccione Primeros caracteres .
Dado que solo necesitamos los dos primeros dígitos para la columna del año, ingrese '2' en la pestaña Recuento y haga clic en Aceptar.
Ahora, modifiquemos nuestra nueva columna editando la barra de fórmulas. Entonces, para cambiar su nombre de columna, cambie los primeros caracteres en la barra de fórmulas a Año. Para convertirlo en su valor anual adecuado, agreguemos 2000 a cada uno de nuestros valores.
Tenga en cuenta que después de modificar nuestra fórmula, recibiremos un error debido a una falta de coincidencia de tipos.
El mensaje de error dice que no podemos aplicar el operador + a los valores de tipo de número y texto.
Para solucionar esto, necesitamos editar nuestra fórmula para que el valor del texto se convierta en un número. Usaremos la función Number.from para hacer esto y encerramos las partes siguientes entre paréntesis. Luego, cambie el tipo de devolución de texto a número.
Columna Semana
Ahora extraigamos el número de semana del código.
Nuevamente, asegúrese de que la columna Fecha de entrega confirmada esté seleccionada, vaya a la pestaña Agregar columna, haga clic en Extraer, luego seleccione Rango.
Para obtener el tercer y cuarto dígito de nuestro código, debemos comenzar a contar desde 0, ya que Power Query se basa en cero. Esto significa que para obtener el tercer dígito de nuestro código, nuestro rango debe comenzar desde 2.
Y como solo necesitamos 2 dígitos del código para el número de semana, ingresaremos 2 en el campo Número de caracteres.
Una vez más, la misma lógica se aplica aquí. Para transformar la etiqueta de la columna a su nombre propio, cambie Rango de texto a Semana en la barra de fórmulas.
Además, agregue la función Number.from en nuestra fórmula, encierre las partes siguientes entre paréntesis y cambie el tipo de retorno a un número.
Columna de día
Para la columna del día, solo necesitamos el último dígito del código. Para extraerlo, seleccione la columna Fecha de entrega confirmada , vaya a la pestaña Agregar columna, seleccione Extraer y luego haga clic en Últimos caracteres .
Ingrese 1 porque solo queda un dígito del código que necesitamos extraer.
Al igual que hicimos antes, en la barra de fórmulas, cambie Últimos caracteres a Día para que nuestra nueva columna tenga su nombre propio.
Nuevamente, agregue la función Number.from , encierre las siguientes partes de la fórmula entre paréntesis y cambie el tipo de devolución a número.
Búsqueda de 3 vías para obtener un valor de fecha
Ahora que tenemos todos los componentes para recuperar una sola fecha de nuestra tabla de calendario, lo único que queda por hacer es realizar una búsqueda de 3 vías .
Para hacerlo, vaya a la pestaña Inicio y seleccione Fusionar consultas.
Ya que vamos a fusionarnos con nuestra tabla de Fechas, haga clic en la pestaña desplegable y seleccione Fechas.
Identificando los pares
Ahora, vamos a identificar los pares que van juntos.
En la tabla superior, seleccione la columna del año y luego emparéjela con la columna del año de la tabla a continuación.
Para seleccionar otro par, presione el botón Ctrl en su teclado, seleccione la columna de la semana de la tabla superior y emparéjela con la columna del número de semana de la tabla a continuación.
Por último, sin dejar de presionar el botón Ctrl, seleccione la columna de día de la tabla superior y vincúlela a la columna DíaEnSemana de la tabla siguiente.
Para asegurarse de que las columnas estén emparejadas correctamente, verifique si el número de índice coincide entre sí.
Como se muestra a continuación, las columnas Año deben tener un Índice 1, la columna Semanas debe tener un Índice 2 y la columna Días debe tener un Índice 3.
Obtener el valor de fecha adecuado
Debido a que solo necesitamos la columna de fechas, anule la selección de todas las demás columnas y deje la columna de fechas marcada como se muestra a continuación.
Como puede ver, el primer valor en nuestra nueva columna de fechas es 4-4-2020. Sin embargo, recuerde que en el foro, el código 20145 debe convertirse en 3-4-2020.
Esto se debe a que si examinamos nuestra tabla de fechas, podemos ver que en la columna DayInWeek, el conteo comienza de 0 a 6 y no de 1 a 7.
Restar de la columna del día
Para arreglar esto, restemos 1 de todos los valores en nuestra columna Día.
En la sección Pasos aplicados, haga clic en el paso donde agregamos la columna del día. Este fue el paso de los últimos caracteres insertados .
En la barra de fórmulas, reste 1 justo después de los paréntesis.
Después de hacer eso, podemos ver que ya tenemos los valores correctos en nuestra columna de fecha.
Finalmente, lo último que debemos hacer es limpiar y eliminar las columnas que ya no necesitamos.
Para ello, seleccione Elegir columnas, anule la selección de todo lo demás y deje marcadas la columna Fecha de entrega confirmada y la columna de fecha.
¡Y hemos terminado! El resultado de nuestro trabajo debería verse así.
En este blog, convertimos un código que está en formato de año, semana y día de la semana a un valor de fecha adecuado. Separamos el código y creamos 3 columnas a partir de él. Al usar una búsqueda de 3 vías, fusionamos estas columnas para lograr un valor de fecha único.
La técnica que usamos para abordar el problema en el foro de soporte se puede usar en otros escenarios. Así que asegúrese de entenderlos bien.