Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
jengwt
Helper V
Helper V

M / Power Query Dynamic 25-Calendar-Months to Date Filter

Hola, comunidad PBI. Estoy trabajando en una forma de filtrar los datos importados para los intervalos de fechas dinámicos.

Este intento en particular tiene como objetivo filtrar sólo para el mes hasta la fecha y los 24 meses calendario anteriores. Esto es lo que se me ha llegado a, hasta ahora (ver código a continuación). Funciona, pero ¿alguien tiene una forma más elegante o eficiente de hacer esto?

Tenga en cuenta que los datos de hoy no son necesarios. Sólo queremos todo para los 25 meses hasta ayer. Por ejemplo, el 9/22/2020 necesito que la primera fecha sea 9/1/2018 y la última fecha sea 9/21/2020, y el 1/1/2021 necesito que la primera fecha sea 12/1/2018 y la última fecha sea 12/31/2020.

Esta sería una lógica similar para Databricks Spark SQL e IBM Db2 SQL:
Spark SQL: TO_DATE(CreateTimestamp) >- ADD_MONTHS( DATE_ADD( DATE_ADD( CURRENT_DATE(), -1), -DAYOFMONTH( DATE_ADD(CURRENT_DATE(), -1)) +1), -24) Y TO_DATE(CreateTimestamp) < CURRENT_DATE()
Db2 SQL: CRT_DATE > FIRST_DAY (FECHA ACTUAL - 1) - 2 Años Y CRT_DATE < FECHA ACTUAL

let
    Source = blah blah blah,
    navigation_step = blah blah blah,
    #"Filtered Rows" = Table.SelectRows(navigation_step, each Date.IsInPreviousNMonths([DayDate], 24) or Date.IsInPreviousNDays([DayDate], 30)),
    #"Removed Other Columns" = blah blah blah
in
    #"Removed Other Columns"

Anteriormente intenté usar funciones de adición de fecha con DateTime.LocalNow, pero eso no funcionó. Desde entonces lo he borrado, pero era algo como esto:

#"Filtered Rows" = Table.SelectRows(navigation_step, each [DayDate] >= Date.AddMonths(Date.StartOfMonth(Date.AddDays(DateTime.LocalNow, -1)), -24)),

Los datos para esto no son particularmente importantes; esto es más una cuestión conceptual. Los datos podrían ser una tabla de calendario o agregaciones diarias de datos. Una consideración importante es que puede haber demasiados datos para ser importados en el PBIX, por lo que queremos sólo tirar de lo que se necesita.

jengwt_0-1600871548717.png

¡Gracias por tu ayuda!

7 REPLIES 7
edhans
Super User
Super User

@jengwt estás en el camino correcto. En lugar de tenerlo directamente en su código M, considere este tipo de consulta:

Cree dos consultas en blanco. Llame a un varStartDate y a un varEndDate (o sea cual sea su convención de nomenclatura.

varStartDate ( varStartDate)

let
    Source = Date.StartOfMonth(Date.AddMonths(DateTime.Date(DateTime.LocalNow()), -24))
in
    Source

varEndDate

let
    Source = Date.AddDays(DateTime.Date(DateTime.LocalNow()), -1)
in
    Source

A continuación, utilice esto para su lógica Entre:

= Table.SelectRows(#"Changed Type", each [Date] >= varStartDate and [Date] <= varEndDate)

Es un poco más fácil de leer, ya que puede ver qué fecha produce varStart/EndDate simplemente haciendo clic en ellos en la lista Query, y la instrucción Table.SelectRows se retirará si está usando esto en cualquier tipo de servidor, lo que significa que SQL Server, por ejemplo, procesará el filtro por usted. Si se encuentra en un archivo de Excel o en archivos CSV, no importará desde una perspectiva de rendimiento.

Solo asegúrese de que ambas consultas varStart/End Date no estén habilitadas para cargarse.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

@edhans  A problem that I'm having with this now is getting the time zones to display for the user in US Central Time. Any advice? I'm also exploring it in this thread.

Vea si este artículo ayuda a @jengwt . Acerca de la mitad de la salida hay una discusión detaled sobre cómo mostrar las cosas en su zona horaria local usando lo siguiente, que sería para la TZ central:

=DateTimeZone.SwitchZone(DateTimeZone.LocalNow(),-6 + varDSTOffset,0)

Asegúrese de marcar una o más de estas respuestas como solución. Este subproceso sigue mostrándose como no resuelto.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

@edhans normalmente no soy uno para crear lo que yo llamaría "tablas variables" como esas, ¡pero me gusta esta idea! Esas variables se pueden utilizar en todas las consultas y en el propio informe, y solo tendría que editar las dos si cambian los requisitos de fecha. ¡Gracias!

Tenemos un número de usuarios a los que todavía les gustan sus hojas de cálculo y orígenes de SharePoint, pero estamos avanzando hacia un modelo de informes de datos más modernizado. Esto será útil desde el punto de vista de las mejores prácticas.

Gran @jengwt - Tengo un grupo en Power Query llamado "Variables" y todavía estoy todos allí arriba. La fecha de inicio y finalización es común, pero tengo otros. Algunas están en forma de listas (varTrackedVendors, o varVendorsActiveLTM) que se pueden generar manual o dinámicamente, luego las uso en otros lugares para filtrar y demás.

Simplemente hace que todo sea más fácil de leer, especialmente si vuelve a él 6 meses más tarde y está depurando.

¡Esperamos que el resto de tu proyecto funcione sin problemas!



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
Greg_Deckler
Super User
Super User

@jengwt Probablemente podría usar algunos datos de muestra.

@ImkeF @edhans @HotChilli


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

Hola @Greg_Deckler. Los datos pueden ser cualquier cosa, desde una tabla de calendario hasta agregaciones diarias. Sólo queremos limitar el intervalo de fechas en la importación.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors