Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola a todos,
Tengo un problema con la creación de un gráfico de líneas simple para el actual y el año pasado con los meses en el eje X (no acumulativo).
Tengo mis 2 medidas que funcionan bien en tablas pivotantes:
- CA N YTD (año actual):
CALCULATE(Calculs[CA];
FILTER(
ALL('Calendar');
'Calendar'[Année]=MAX('Calendar'[Année])
&& 'Calendar'[Date] <= MAX('Calendar'[YTDmaxDate])
)
)
- CA N-1 (último año):
CALCULATE(Calculs[CA];
FILTER(
ALL('Calendar');
'Calendar'[Année]=MAX('Calendar'[Année])-1
)
)
La fecha máxima en mi calendario no es hoy, sino el final del año actual, por lo que creé un campo YTDmaxDate en mi calendario como se recomienda en otro mensaje que es la fecha de hoy (dd/mm) para cada año.
Traté de hacer el gráfico de líneas simple y aquí están los diversos resultados :
- mes utilizado es el campo de mes de la tabla de calendario
Mes utilizado es el campo de mes de la tabla Calendario
sólo se muestra el total de cada año
- el mes utilizado es el mes obtenido con la jerarquía de fechas que se construye automáticamente en la tabla de calendario ma:
mismo problema
- mes utilizado es un campo de texto "mes" en mi tabla transacción:
el problema aquí es que el mes se ordenan de manera muy extraña y no encontré ningún lugar para especificar la clasificación.
La medida genérica "CA" se calcula de esta manera:
CALCULATE (
SUM('TRANSACTION'[V_CA_HT]);
FILTER ('TRANSACTION';search("*vente*";'TRANSACTION'[V_type];;0)<>0)
)
Cuando lo utilicé en lugar de las medidas CA N YTD y CA N-1, tengo la repartición por mes al usar el mes obtenido por la jerarquía de fechas y el campo de mes de la tabla Calendario, pero por supuesto acumulando todos los años.
¿Alguien tiene una idea para solucionar este problema?
Muchas gracias por su ayuda,
Delphine
HI @delphinew,
Puede intentar utilizar las siguientes fórmulas de medida con el campo de fecha de calendario 'año', 'mes' parte como el eje de su gráfico de líneas:
CA N CYTD =
VAR _currDate =
MAX ( 'Calendar'[Date] )
RETURN
CALCULATE (
Calculs[CA];
FILTER (
ALLSELECTED ( 'Calendar' );
'Calendar'[Année] = YEAR ( _currDate )
&& 'Calendar'[Date] <= _currDate
)
)
CA N LYTD =
VAR _currDate =
MAX ( 'Calendar'[Date] )
RETURN
CALCULATE (
Calculs[CA];
FILTER (
ALLSELECTED ( 'Calendar' );
'Calendar'[Année]
= YEAR ( _currDate ) - 1
&& 'Calendar'[Date] <= _currDate
)
)
saludos
Xiaoxin Sheng
hola @v-shex-msft
gracias por su mensaje. la fórmula del año pasado no funciona ni:
pero entiendo la cosa: Necesito tener una fórmula diferente para el gráfico de líneas y la tabla dinámica.
Hola a todos,
Borré mi publicación anterior porque arreglé el problema: cuando escribo algunos comentarios o dejo algunas pruebas en el código usando /* * */, si hay algunos errores entre /* */, Power Bi intenta leerlos también, y termina en "se alcanzó el final de la salida".
Ahora tengo un gráfico de líneas como este:
Con
YTD Sales = CALCULATE(Calculs[CA];DATESYTD(('Calendar'[Date]);"12/31"))
CA LY = CALCULATE([YTD Sales];SAMEPERIODLASTYEAR('Calendar'[Date]))
//and this formula give the same result as YTD Sales which is reassuring:
CAYTD =
VAR _currDate = MAX ('Calendar'[Date])
RETURN
CALCULATE ( Calculs[CA];
FILTER (
ALLSELECTED ( 'Calendar' );
'Calendar'[Année] = YEAR ( _currDate )
&& 'Calendar'[Date] <= _currDate
)
)
sin embargo, todas las fórmulas me dan las ventas acumuladas alcanzadas al final del mes, mientras que estoy tratando de tener sólo las ventas del mes para cada mes. ¿Qué debo hacer?
Muchas gracias
Delphine
HI @delphinew,
Si desea interrumpir el balanceo al final de cada mes, puede extraer el valor del mes de su campo de fecha como condición de filtro:
Current Year MTD =
VAR _currDate =
MAX ( 'Calendar'[Date] )
RETURN
CALCULATE (
Calculs[CA];
FILTER (
ALLSELECTED ( 'Calendar' );
YEAR ( 'Calendar'[Date] ) = YEAR ( _currDate )
&& MONTH ( 'Calendar'[Date] ) = MONTH ( _currDate )
&& 'Calendar'[Date] <= _currDate
)
)
saludos
Xiaoxin Sheng
hola @v-shex-msft lo siento por mi respuesta tardía, no estaba trabajando en Power BI estos últimos días.
gracias por su propuesta, probé su fórmula, pero todavía tengo la cantidad acumulada en el gráfico de líneas en lugar de la cantidad de cada mes.
Hola a todos,
Traté de solucionar este problema todo el día, parece que no puedo tener el resultado que deseo (y solía tener antes).
Me gustaría tener sin ningún filtro en la fecha hecha por un segmento :
- ventas de este año, pero no la cumul, las ventas reales por mes
- ventas del año anterior, ditto no la acumulación, las ventas actuales por mes
y al filtrar el año a través de un segmento, por ejemplo elijo 2017 como un año, en el mismo gráfico:
- las ventas mensuales de 2017
- las ventas de 2016 por mes
Cuando hago un FILTER(ALL(Calendar)...) o FILTER(ALL(Transaction)), todo lo que consigo tener es el total anual, sin el ALL, la medida no se muestra en el gráfico. Intenté con dateadd, sameperiodlastyear, datesinbetween, [date] < y >.
Si alguien tiene la respuesta sería genial, ya que es bastante molesto no ser capaz de reproducir lo que era una fórmula muy simple en mi software de BI anterior.
Hola a todos,
Sigo teniendo el error messae "se alcanzó el final de la entrada", incluso para un cálculo muy simple como este (tratando de calcular el completo paso a paso):
CA LY =
CALCULATE(
SUM('TRANSACTION'[V_CA_HT]);
FILTER('TRANSACTION';'TRANSACTION'[V_annee]=2019)
)
Lo intenté con el número 2019 y "2019", sin ningún cambio en absoluto para el resultado. 'TRANSACTION'[V_annee] es un entero.
¿Qué me pierdo?
¡Muchas gracias!
Editar : evento esto me da el error:
TEST = SUM('TRANSACTION'[V_CA_HT])
or
TEST = SUMX('TRANSACTION';'TRANSACTION'[V_CA_HT])
pero el suyo me da el resultado correcto:
SUMX(
FILTER('TRANSACTION'; SEARCH("*vente*";'TRANSACTION'[V_type];;0)<>0);
'TRANSACTION'[V_CA_HT]
)
or (same result)
CALCULATE (
SUM('TRANSACTION'[V_CA_HT]);
FILTER ('TRANSACTION';search("*vente*";'TRANSACTION'[V_type];;0)<>0)
)
Con calendario de fecha tratar como
This Year =
var _max = maxx('Sales','Sales'[Date])
var _min = date(year(_max),1,1)
return
CALCULATE(SUM('Sales'[Sales]), FILTER(all('Date'), 'Date'[Date]<=_max && 'Date'[Date]>=_min))
last Year =
var _max1 = maxx('Sales','Sales'[Date])
var _max = date(year(_max1)-1,month(_max1),day(_max1))
var _min = date(year(_max),1,1)
return
CALCULATE(SUM('Sales'[Sales]), FILTER(all('Date'), 'Date'[Date]<=_max && 'Date'[Date]>=_min))
Lo ideal es usar la inteligencia del tiempo
YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(('Date'[Date]),"12/31")) //change end date of year
This Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD((ENDOFYEAR('Date'[Date])),"12/31")) //change end date of year
Last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-1,Year),"12/31")) //change end date of year
Last YTD complete Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR(dateadd('Date'[Date],-1,Year)),"12/31")) //change end date of year
Last to last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-2,Year),"12/31")) //change end date of year
Year behind Sales = CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Year))
Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/
Hola @amitchandak gracias de nuevo por ayudarme! 🙂
Tengo un error con su fórmula del año pasado (el primero):
Mensaje de error:
MdxScript (Modelo) (146, 12) Error computacional en la medida 'Cálculos': el tipo de datos de un argumento DATE es incorrecto o el resultado es demasiado grande o demasiado pequeño.
También tengo un problema con su primera fórmula de este año: si filtro en otro año, me devuelve el volumen de negocios de todo el año y no el volumen de negocios de la YTD para ese año específico que no es el caso con la solución que encontré en ese foro:
Las ventas YTD, Estas fórmulas de ventas tienen el mismo problema.
Las últimas ventas YTD, las ventas completas de la última YTDy el año detrás de las fórmulas de ventas proporcionan las ventas del año anterior completo.
Creé mi calendario con Power Query siguiendo el tutorial aquí : https://exceleratorbi.com.au/build-reusable-calendar-table-power-query/ y añadiendo algunos campos que necesitaba, desde el que el YTDmaxDate (https://community.powerbi.com/t5/Desktop/YTD-of-years-until-today/m-p/1007419#M477421 . El código completo de mi calendario es el siguiente:
shared Calendar = let
Calendar = List.Dates(StartDate, NbJour+1, #duration(1, 0, 0, 0)),
#"Converti en table" = Table.FromList(Calendar, Splitter.SplitByNothing(), null, null, ExtraValues.List),
#"Colonnes renommées" = Table.RenameColumns(#"Converti en table",{{"Column1", "Date"}}),
#"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées",{{"Date", type date}}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié",{"Column2"}),
StartDate = #date(2009, 1, 1),
EndDate = DateTime.Date(Date.EndOfYear(DateTime.LocalNow())),
NbJour = Duration.Days(EndDate - StartDate),
AffichageListeDates = #"Colonnes supprimées",
#"Année insérée" = Table.AddColumn(AffichageListeDates, "Année", each Date.Year([Date]), Int64.Type),
#"Mois inséré" = Table.AddColumn(#"Année insérée", "Mois", each Date.Month([Date]), Int64.Type),
#"Nom du mois inséré" = Table.AddColumn(#"Mois inséré", "Nom du mois", each Date.MonthName([Date]), type text),
#"Nb jr du mois insérés" = Table.AddColumn(#"Nom du mois inséré", "Nb jr du mois", each Date.DaysInMonth([Date]), Int64.Type),
#"Trimestre inséré" = Table.AddColumn(#"Nb jr du mois insérés", "Trimestre", each Date.QuarterOfYear([Date]), Int64.Type),
#"Semaine de l'année insérée" = Table.AddColumn(#"Trimestre inséré", "Semaine de l'année", each Date.WeekOfYear([Date]), Int64.Type),
#"Jour inséré" = Table.AddColumn(#"Semaine de l'année insérée", "Jour", each Date.Day([Date]), Int64.Type),
AnnéeMois = Table.AddColumn(#"Jour inséré", "AnnéeMois", each ([Année]-2000)*100+[Mois]),
MonthID = Table.AddColumn(AnnéeMois,"MonthID", each (Date.Year([Date])-Date.Year(StartDate))*12 + Date.Month([Date])),
#"Jour de la semaine inséré" = Table.AddColumn(MonthID, "Jour de la semaine", each Date.DayOfWeek([Date],Day.Monday)+1, Int64.Type),
#"Jour de l'année inséré" = Table.AddColumn(#"Jour de la semaine inséré", "Jour de l'année", each Date.DayOfYear([Date]), Int64.Type),
#"Fin de trimestre insérée" = Table.AddColumn(#"Jour de l'année inséré", "Fin du trimestre", each Date.EndOfQuarter([Date]), type date),
#"Début de trimestre inséré" = Table.AddColumn(#"Fin de trimestre insérée", "Début de trimestre", each Date.StartOfQuarter([Fin du trimestre]), type date),
#"Nb jours du trimestre ajoutée" = Table.AddColumn(#"Début de trimestre inséré", "Nb jours du trimestre", each (Date.AddDays([Fin du trimestre],1)-[Début de trimestre])),
#"Jr du trimestre ajoutée" = Table.AddColumn(#"Nb jours du trimestre ajoutée", "Jour du trimestre", each [Nb jours du trimestre]-([Fin du trimestre]-[Date])),
#"Type modifié1" = Table.TransformColumnTypes(#"Jr du trimestre ajoutée",{{"Nb jours du trimestre", Int64.Type}, {"Jour du trimestre", Int64.Type}}),
#"Colonnes permutées" = Table.ReorderColumns(#"Type modifié1",{"Date", "Année", "Mois", "Nom du mois", "Nb jr du mois", "Trimestre", "Semaine de l'année", "Jour", "AnnéeMois", "MonthID", "Jour de la semaine", "Jour de l'année", "Début de trimestre", "Fin du trimestre", "Nb jours du trimestre", "Jour du trimestre"})
in
#"Colonnes permutées";
las tablas Calendario y Transacción están vinculados junto con la fecha:
¡Muchas gracias!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 |