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

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.

Reply
_n_MarianLein
Helper II
Helper II

Referencia a la columna de tablas externas en la función

Hola a todos


Espero que puedas ayudarme con esto.

Mi pregunta básica es, ¿cómo puedo hacer referencia a una tabla externa desde dentro de una función desde el editor de PowerQuery.


Aquí está mi configuración:

Tengo una mesa con tareas, y otra con Vacaciones.
Para mi monitoreo, estoy usando una función que deducirá los días festivos de la duración real de la tarea.

Tabla "TASK"

ID de tareaEmpezarFinal
aaa0012020-01-052020-01-06
aaa0022020-01-122020-02-01
aaa0032020-04-012020-04-15
aaa0042020-04-092020-04-20

Tabla "HOLIDAY"

Nombre de vacacionesFecha
Nochevieja2020-01-01
Viernes Santo2020-04-10
Domingo de Pascua2020-04-12
Lunes de Pascua2020-04-13
Día del Trabajo2020-05-01

Ahora, para obtener la información de la tabla "Vacaciones" en mi función, hasta ahora tengo:

  • Se unió a la tabla Vacaciones con la tabla Mis tareas (todas [HOLIDAYS. Fecha] a cada uno de [ID de tarea])
  • Ejecutó mi función, haciendo referencia a la recién creada [HOLIDAYS. Fecha] en la tabla [TASKS]

// working days are from Mon=0 to Fri=4 and not in holiday list
fnIsWorkingDay = (dt as date) as logical => 
     Date.DayOfWeek(dt, Day.Monday) < 5 and not List.MatchesAny(HolidayList, each _ = dt)​

  • Se ha eliminado la columna

Como la tabla [TASKS] es enorme (con >60k entradas), la unión está tomando bastante tiempo, y es muy ineficiente.

¿Hay alguna manera de hacer referencia directamente a los [HOLIDAYS. Fecha] como una lista, en lugar de unirse y usar lo que se llama "HolidayList" en la función anterior?

Eso probablemente sacaría la mayor parte del tiempo de procesamiento para mí...

Editar: marcado que estoy trabajando en el editor de PowerQuery, no en PowerBI directamente. Si la pregunta necesita ser movida, por favor hágalo. Lo siento por las molestias!

7 REPLIES 7
ImkeF
Super User
Super User

Hola @_n_MarianLein ,

hay un par de cosas aquí que no se alinean:

1) ¿Cómo puedes unirte a una cita con un number? ("Se unió a la tabla Vacaciones con la tabla Mis tareas (todas [HOLIDAYS. Fecha] a cada uno de [IDde tarea] )")

2) ¿Qué es eso "HolidayList" que usted está refiriendo en la función? No hay ninguna mención/descripción de la misma hasta el momento:

los días laborables son de lunes a 0 a viernes 4 y no están en la lista de vacaciones
fnIsWorkingDay (dt como fecha) como lógico >
Date.DayOfWeek(dt, Day.Monday) < 5 y no List.MatchesAny(HolidayList, each _ á dt)

En caso de que esté buscando una función NETWORKDAYS que se encargue de las vacaciones también, por favor revise mi entrada de blog aquí: https://www.thebiccountant.com/2020/02/20/date-networkdays-function-for-power-query-and-power-bi/

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

Hola @ImkeF,
Siento no haber sido claro antes.

Lo que estoy haciendo es unir todas las entradas de la tabla "HOLIDAYS" a cada entrada de la tabla "TASKS". El resultado de este proceso es una lista que se encuentra en una columna independiente, llamada "HolidayList", que luego estoy comprobando contra la fecha de inicio y finalización.

El código de este paso en Power Query es:

=Table.AddColumn(#"LastStep", "Holidays", each HOLIDAYS[Date])

Después, estoy pasando esta tabla a la función que describí anteriormente calculando el tiempo transcurrido como parámetro "HolidayList".

Hola @_n_MarianLein ,

¿puede compartir un libro de trabajo de ejemplo con algunos datos de maquetas, por favor?

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

amitchandak
Super User
Super User

Crea una tabla de fechas y combina tus vacaciones en ella. Y refiérase a la fórmula del día de trabajo en el archivo dado entre dos fechas y use que

https://www.dropbox.com/s/y47ah38sr157l7t/Order_delivery_date_diff.pbix?dl=0

En este archivo, compruebe cómo ha sido la fecha en Order dim. De la misma manera que puede mover vacaciones a la tabla de fechas y crear 1,0 para días laborables y no laborables

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 - ¿Tendría sin tener más información sobre este tema, o me aconsejaría que planteara este tema en otro lugar?

@ImkeF , @Ashish_Mathur puede ayudar en este

Gracias.
Debería haber dicho esto antes de pensar, pero estoy trabajando en el editor de PowerQuery aquí...
Actualizaré la pregunta en un segundo.

¿Supongo que este consejo no funcionará allí?

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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