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.
No tengo conocimiento sobre el código M. Estoy obteniendo una tabla Date de la base de datos SQL para power bi cube. Sus fechas van hasta el año 2024. Quiero limitarlo hasta el próximo 31 de marzo de la fecha actual dinámicamente.
Gracias
Solved! Go to Solution.
@seki56 ¡Creo que lo tengo!
let
Source = Sql.Databases("DatabaseName"),
AdventureWorksDW2012 = Source{[Name="AdventureWorksDW2012"]}[Data],
dbo_DimDate = AdventureWorksDW2012{[Schema="dbo",Item="DimDate"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_DimDate,
each if [FullDateAlternateKey] <= #date(Date.Year(DateTime.LocalNow()), 3, 31)
then [FullDateAlternateKey] <= #date(Date.Year(DateTime.LocalNow()), 3, 31)
else [FullDateAlternateKey] <= #date(Date.Year(DateTime.LocalNow()) + 1, 3, 31)
)
in
#"Filtered Rows"
¡Pruébalo y avísame! 🙂
@seki56 sentimos este y la otra pregunta tomó un par de días para resolver. Le agradecería que marcar la solución tanto en esta como en la pregunta original.
¡Felices vacaciones!
No @seki56
Sí, entiendo que tiene una tabla de fechas de SQL, pero si solo desea una lista finita de fechas desde hoy hasta el próximo 31 de marzo, ¿no es igual de fácil (¿más fácil?) crear esa lista en lugar de cargar una lista de fechas y luego manipularlas para excluir fechas/filas que no desea?
¿O tal vez hay más? ¿Está cargando algo más que fechas desde SQL? Si es así, ¿está hablando de la necesidad de filtrar las filas para mantener cualquier adicióna datos en cada registro, no sólo las fechas?
saludos
Phil
Proud to be a Super User!
La tabla de fechas comienza a partir de 2015 y ya tiene campos necesarios para los cálculos, y las fechas pasadas son necesarias para el cálculo basado en Time Intelligence. El ejercicio futuro comienza a partir del 1 de abril. Con las fechas va hasta 2024 desordenar el cálculo de Time Intelligence, es por eso que necesito limitar la tabla de fechas en la fecha final del año FY con su otra información.
No @seki56
Si solo necesita una lista de fechas desde ahora hasta el próximo 31 de marzo, puede crear esta lista en Power Query con este código M.
let
Source =
if DateTime.Date(DateTime.LocalNow()) >= #date(Date.Year(DateTime.LocalNow()),3,31)
then List.Generate(() => DateTime.Date(DateTime.LocalNow()) , each _ <= #date(Date.Year(DateTime.LocalNow())+1, 3, 31), each Date.AddDays( _ , 1))
else List.Generate(() => DateTime.Date(DateTime.LocalNow()) , each _ <= #date(Date.Year(DateTime.LocalNow()), 3, 31), each Date.AddDays( _ , 1))
in
Source
saludos
Phil
Si respondí a su pregunta por favor marque mi post como la solución.
Si mi respuesta ayudó a resolver su problema, déle un kudos haciendo clic en Thumbs Up.
Proud to be a Super User!
Ya tengo la tabla Date que es generada por la base de datos hasta 2024 Quiero limitarla al próximo 31 de marzo a partir de la fecha actual dinámicamente. Si la fecha actual es hoy, debe terminarse el 3/31/2021 y si la fecha actual 4/1/2021 debe ser 3/31/2022.
Trabajé esto usando AdventureWorks... espero que esto te ayude a 🙂
#"Filtered Rows" = Table.SelectRows(dbo_DimDate, each [FullDateAlternateKey], if [FullDateAlternateKey] < #date(Date.Year(Date.From(DateTime.LocalNow())), 3, 31) then [FullDateAlternateKey] < #date(Date.Year(Date.From(DateTime.LocalNow())), 3, 31) else [FullDateAlternateKey] < #date(Date.Year(Date.From(DateTime.LocalNow())) + 1, 3, 31))
Usé el código de la siguiente manera
= Table.SelectRows(dbo_DimDate , each [Date], if [Date] < #date(Date.Year(Date.From(DateTime.LocalNow())), 3, 31) then [Date] < #date(Date.Year(Date.From(DateTime.LocalNow())), 3, 31) else [Date] < #date(Date.Year(Date.From(DateTime.LocalNow())) + 1, 3, 31))
Pero estoy recibiendo el siguiente error
Expression.Error: Hay un identificador desconocido. ¿Usó la abreviatura [field] para un _[field] fuera de una expresión 'each'?
¿Puede publicar una captura de pantalla de todos los pasos de transformación en el Editor avanzado desde Power Query junto con una captura de pantalla del error?
¿Puede publicar una vista de todos los pasos de transformación desde el Editor avanzado? (Hay un botón en la cinta de opciones en Power Query). Si tiene cosas como cadenas de conexión, direcciones IP o cualquier cosa sensible, probablemente desee ocultarlas primero.
@seki56 disculparme por el retraso... tenía que comprar una tienda de comestibles con la esposa.
Cosas como esta es la razón por la que no me gusta el código M. 🙄 ¡Dame un par de minutos para jugar con él!
@seki56 ¡Creo que lo tengo!
let
Source = Sql.Databases("DatabaseName"),
AdventureWorksDW2012 = Source{[Name="AdventureWorksDW2012"]}[Data],
dbo_DimDate = AdventureWorksDW2012{[Schema="dbo",Item="DimDate"]}[Data],
#"Filtered Rows" = Table.SelectRows(dbo_DimDate,
each if [FullDateAlternateKey] <= #date(Date.Year(DateTime.LocalNow()), 3, 31)
then [FullDateAlternateKey] <= #date(Date.Year(DateTime.LocalNow()), 3, 31)
else [FullDateAlternateKey] <= #date(Date.Year(DateTime.LocalNow()) + 1, 3, 31)
)
in
#"Filtered Rows"
¡Pruébalo y avísame! 🙂
Estimado @littlemojopuppy
Funcionó, gracias por tu ayuda. Apreciamos mucho su esfuerzo.
Así que te encendí a esta idea en tu otro post. El código M tampoco es mi traje más fuerte.
¿Qué pasa si intenta algo como Fecha <- #Date(Date.Year(Date.From(DateTime>LocalNow())) + 1, 3, 31) para que no tenga que mantenerlo? Probablemente no sea sintácticamente perfecto, pero la idea debería funcionar.
Esto funcionará para fechas > 31 de marzo, pero no funcionará para fechas anteriores. Va a tener que incluir un if para determinar si la fecha es anterior o igual al 31 de marzo. Que no puedo ayudar con... Lo siento.
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 |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |