Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
3 years ago

Devolver una lista basada en varias condiciones en Power Query

Hola a todos

Tengo algunos datos de pronóstico que actualmente están estructurados así (hice lo siguiente en Excel solo para darle una idea) -

marca de tiempo de pronósticofecha de liquidaciónPeríodo 1Período 2Período n
01/01/2000 09:3005/01/20000.8999140.4515630.6084770.009698
06/01/20000.8915230.824220.0300270.0654
07/01/20000.6637290.2979370.8740330.743295
08/01/20000.5007660.5652750.1429540.652788
09/01/20000.1941980.0171050.9369810.884122
10/01/20000.508480.4887650.6894770.405967
01/01/2000 13:3005/01/20000.8227750.3388630.5564130.194292
06/01/20000.1434460.1362070.7421180.850311
07/01/20000.6234090.1934690.1421940.321664
08/01/20000.8101110.0174590.8966120.628561
09/01/20000.6409970.176880.8717790.345542
10/01/20000.4687830.2185560.1583360.987228
01/01/2000 21:3005/01/20000.5937710.5066650.6642360.094826
06/01/20000.3928370.4026040.3589110.831175
07/01/20000.8116330.231890.0685490.602519
08/01/20000.3785390.9077860.684050.132635
09/01/20000.0689820.4777730.2834420.547764
10/01/20000.3039740.485170.9718590.823869

Los datos se ordenan según la fecha de liquidación (ascendente). También hay 3 pronósticos al día como puede ver en la columna LHS (tenga en cuenta que estos tiempos no son estáticos y pueden variar en unos minutos).

Lo que me gustaría tener es una columna al final de la tabla, que contenga una lista (por cada fila o fecha de liquidación) que muestre todas las marcas de tiempo pronosticadas -> que están entre la fecha de liquidación de esa fila y la fecha de liquidación - 14 días.

Así, por ejemplo, si la fecha de liquidación de la fila fue el 15 de enero; habría una lista que contendría todas las 14 * 3 marcas de tiempo = 42 marcas de tiempo (1 ene 09:30, 1 ene 14:30, 1 ene 21:30, ... 14 Ene 21:30 ) entre el 1 y el 15 de enero.

Estoy pensando que esto podría hacerse mediante un "vlookup" en una columna de todas las marcas de tiempo distintas (que he podido crear), simplemente no estoy seguro de cómo crear esta columna adicional.

Una vez que haya creado esta columna de listas, me gustaría hacer otro "buscar virtual" para cada marca de tiempo dentro de esa lista y recuperar los valores para el Período 1, El Período 2, ..., el Período n.

¡Cualquier ayuda sería muy apreciada!

3 Replies

  • @ak123 ,

    Estoy un poco confundido sobre el resultado que quieres. ¿Puede adjuntar una captura de pantalla de la salida que espera?

    Gracias por sus esfuerzos y tiempo de antemano.

    Saludos

    Yadong Fang

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      Hi Yadong,

      ¡Gracias por responder! Claro, estaría feliz de expandirme.

      Estoy imaginando una tabla que se ve como a continuación que contiene una nueva columna de listas.

      marca de tiempo de pronósticoasentamiento dt - 14fecha de liquidaciónPeríodo 1Período 2Período nmarcas de tiempo dentro del intervalo de fechas
      10/01/2000 09:3001/01/200015/01/20000.6940760.8364120.470130.264499lista
      02/01/200016/01/20000.80360.0333090.4606030.097421lista
      03/01/200017/01/20000.2791290.7612340.8292950.582785lista
      04/01/200018/01/20000.6631470.5093030.7985640.5087lista
      05/01/200019/01/20000.6990190.3014920.7352260.385019lista
      06/01/200020/01/20000.6693950.294490.6101920.442273lista
      10/01/2000 13:3001/01/200015/01/20000.1326740.0788590.3515410.539105lista
      02/01/200016/01/20000.5131590.1295520.3867610.986358lista
      03/01/200017/01/20000.7574510.9035530.1682240.148062lista
      04/01/200018/01/20000.2964390.8288340.2349680.263399lista
      05/01/200019/01/20000.0104510.4806230.1355640.41822lista
      06/01/200020/01/20000.0530520.0611750.7543880.03808lista
      10/01/2000 21:3001/01/200015/01/20000.4603260.2424160.7238050.072719lista
      02/01/200016/01/20000.3548410.3428650.2611040.238647lista
      03/01/200017/01/20000.2058880.1160110.6168830.008302lista
      04/01/200018/01/20000.4676150.7059120.4873250.946343lista
      05/01/200019/01/20000.205220.1548130.792440.255762lista
      06/01/200020/01/20000.4395270.0630460.2303210.414235lista

      Si ampliamos la lista en la primera fila (donde la fecha de liquidación = 15/1/2000), terminaríamos con una lista de todas las marcas de tiempo (de la 1ª columna) que se encuentran entre el acuerdo dt - 14 y la fecha de liquidación.

      es decir, así es como debería verse después de expandir la lista en la primera fila:

      01/01/2000 09:30
      01/01/2000 13:30
      01/01/2000 21:30
      14/01/2000 21:30

      al verificar la condición, es decir, que la marca de tiempo debe ser > = fecha de liquidación - 14d Y marca de tiempo < = fecha de liquidación, la lista debe devolver todas las marcas de tiempo que satisfagan esta condición ... desde la 1ª columna: no debe ser una función de fecha automatizada que devuelva una secuencia de fechas entre una fecha de inicio / finalización.

      esto se debe a que la porción hh:mm de la fecha y hora no es constante, es decir, no siempre sigue el patrón de 09:30 -> 13:30 -> 21:30. puede variar de 10 a 20 minutos...

      una vez que sea posible crear la columna de listas anterior, quiero aislar solo las columnas para la fecha de liquidación, las marcas de tiempo dentro del rango de fechas y los valores (así):

      fecha de liquidaciónmarcas de tiempo dentro del intervalo de fechasPeríodo 1Período 2Período n
      15/01/200001/01/2000 09:30----
      01/01/2000 13:30----
      01/01/2000 21:30----
      ----
      14/01/2000 21:30----
      16/01/200002/01/2000 09:30----
      02/01/2000 13:30----
      02/01/2000 21:30----
      ----
      15/01/2000 21:30----

      Recuperaré los valores del "período 1, período 2, ..." haciendo una combinación en la primera tabla.

      gracias por investigar esto!!