The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hola a todos, tengo una columna que tiene nombres de meses y quiero convertirlos en números enteros para poder usar la función Fecha (tengo columnas que tienen el día y el año).
Lo intenté:
interruptor (month_name,
"Enero",1,
"Febrero",2,
"Marcha",3 etc
Pero me da el error de que no puedo comparar el texto con un número.
Hola @Khomotjo ,
Utilice el siguiente DAX para lograr su objetivo:
MonthNumber =
SWITCH(
TRUE(),
'Table'[month_name] = "January", 1,
'Table'[month_name] = "February", 2,
'Table'[month_name] = "March", 3,
'Table'[month_name] = "April", 4,
'Table'[month_name] = "May", 5,
'Table'[month_name] = "June", 6,
'Table'[month_name] = "July", 7,
'Table'[month_name] = "August", 8,
'Table'[month_name] = "September", 9,
'Table'[month_name] = "October", 10,
'Table'[month_name] = "November", 11,
'Table'[month_name] = "December", 12,
BLANK() -- Default case if no match is found
)
Asegúrese de reemplazar 'Table'[month_name] con el nombre de la tabla y la columna que contienen meses como cadena
Hola @Khomotjo
Puede concatenar el nombre del mes con un día y un año para obtener la representación de la fecha como texto, convertirla en una fecha real mediante DATEVALUE y ajustarla con MONTH para obtener el número del mes.
Month Number =
-- This measure converts a month name into its corresponding month number.
VAR DateAsText = -- Concatenate the 'Month Name' column with a placeholder day ("1") and year ("2024")
-- to create a full date string (e.g., "January 1, 2024").
'Table'[Month Name] & " 1, " & "2024"
RETURN
-- Convert the date string into a date value and extract the month number.
MONTH (
DATEVALUE ( DateAsText )
)
Hola @Khomotjo
Pruebe a continuación dax y cree una columna calculada
MonthNo = SWITCH('Year - Month'[Month], "Jan", 1, "Feb",2, "Mar",3, "Apr",4, "May",5, "Jun",6, "Jul",7, "Aug",8, "Sep",9, "Oct",10, "Nov",11, "Dec",12 )
O pruebe esto
O puede probar esto para crear una columna de fecha
Month Name =
SWITCH(Table[Month],
"January", Format (Date(2020,1,1), “mmm”),
"February", Format (Date(2020,2,1), “mmm”),
//and so on for the rest of the months
)
Espero que el método anterior funcione para usted.
¡Espero haber respondido a tu pregunta!
Hola @Khomotjo ,
Para solucionar el problema de convertir los nombres de los meses en enteros en DAX, el error que se ha encontrado se produce porque la función SWITCH requiere tipos de datos coherentes para sus valores devueltos. Una manera de resolver esto es mediante el uso de una función SWITCH correctamente estructurada, asegurándose de que los valores devueltos sean explícitamente enteros. He aquí un ejemplo:
MonthNumber = SWITCH(
TRUE(),
'Table'[Month Name] = "January", 1,
'Table'[Month Name] = "February", 2,
'Table'[Month Name] = "March", 3,
'Table'[Month Name] = "April", 4,
'Table'[Month Name] = "May", 5,
'Table'[Month Name] = "June", 6,
'Table'[Month Name] = "July", 7,
'Table'[Month Name] = "August", 8,
'Table'[Month Name] = "September", 9,
'Table'[Month Name] = "October", 10,
'Table'[Month Name] = "November", 11,
'Table'[Month Name] = "December", 12,
BLANK()
)
Como alternativa, si su modelo de datos lo permite, puede crear una tabla de asignación con dos columnas: Nombre del mes y Número de mes. A continuación, establecería una relación entre la tabla principal y esta tabla de asignación utilizando la columna Nombre del mes como clave. Una columna calculada en la tabla principal puede hacer referencia al número de mes utilizando la función RELATED, de la siguiente manera:
MonthNumber = RELATED('Month Mapping'[Month Number])
Para otro enfoque, puede usar Power Query para controlar esta transformación agregando una columna condicional que asigne el nombre de cada mes a su valor entero correspondiente. Si los datos contienen nombres de meses en inglés coherentes, también puede analizar dinámicamente el número de mes mediante la función DATEVALUE concatenando el nombre del mes, un día y el año en un formato de fecha válido. Por ejemplo:
MonthNumber = MONTH(DATEVALUE('Table'[Month Name] & " 1, " & 'Table'[Year]))
Este método aprovecha la capacidad integrada de la función DATEVALUE para interpretar nombres de meses basados en texto, lo que lo hace eficiente y dinámico para los casos con una columna Year válida. Cada uno de estos enfoques aborda el problema al tiempo que garantiza la flexibilidad y la facilidad de uso en Power BI.
Saludos