Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

Problema de forma de datos

hola expertos,

Necesita un poco de ayuda lo que he estado tratando de resolver forwhole día, pero no pudo.

columna1 Fecha1 Fecha2

Cliente1 03/12/2010 06/09/2013

Custermer1 06/09/2018 05/03/2010

Cliente1 03/12/2010 06/06/2012

Cliente2 09/11/2017 07/06/2017

Cstomer2 05/11/2018 25/09/2018.......

Salida que estoy buscando

columna1 fecha1 fecha2

cliente1 03/12/2010 05/03/2010

cliente1 06/09/2018 BLNK

Cliente1 03/12/2010 05/03/2010

Cliente2 09/11/2017 25/09/2018

Cliente2 05/11/2018 25/09/2018

así que básicamente, para cada cliente, con cada fila en el campo Date1, debe buscar el campo after date from date2 más cercano para el cliente respectivo, si no se encuentra ninguno, luego devolver en blanco.

dax/M: ¿algo para que funcione? Gracias por el hep de antemano.

  • Este es un poco de DAX para una columna calculada

    Tabla[NewDate2] =

    VAR _CurrentDate1 = 'Tabla'[Fecha1]
    devolución
    CALCULAR(
    MIN('Tabla'[Fecha2]),
    ALLEXCEPT('Tabla', 'Tabla'[Columna1]),
    'Tabla'[Fecha2] > _CurrentDate1
    )

3 Replies

  • Este es un poco de DAX para una columna calculada

    Tabla[NewDate2] =

    VAR _CurrentDate1 = 'Tabla'[Fecha1]
    devolución
    CALCULAR(
    MIN('Tabla'[Fecha2]),
    ALLEXCEPT('Tabla', 'Tabla'[Columna1]),
    'Tabla'[Fecha2] > _CurrentDate1
    )
    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      dax está funcionando, acabo de agregar > = ya que había algunas fechas iguales. Muchas gracias

  • Creo que primero necesitaría aplanar los datos, ya sea en SQL (siempre es mejor realizar esto en la fuente) o en M.

    A. Crear dos tablas:

    1) Fecha del cliente (a partir de la fecha 1)

    columna1 Fecha

    Cliente1 03/12/2010

    Custermer1 06/09/2018

    ...

    2) Fecha del cliente (a partir de la fecha 1)

    columna1 Fecha

    Cliente1 06/09/2013

    Custermer1 05/03/2010

    ...

    B. Unión de los mismos:

    columna1 Fecha

    Cliente1 03/12/2010

    Custermer1 06/09/2018

    Cliente1 06/09/2013

    Custermer1 05/03/2010

    C. Quitar duplicados y ordenar por cliente y fecha.

    Sería útil agregar una columna de número de fila.

    D. Crear una tabla customer-date 1- date 2.

    En SQL, puede hacerlo uniendo la tabla en sí misma:

    De <Tabla>T1

    LEFT JOIN <Tabla>T2

    en

    T1. [rownumber] = T2. [rownumber]+1 Y T1. [columna1]=T2. [columna1]

    Eso debería darle el resault deseado.

    Si no usa SQL, esto podría ayudar a obtener la fila anterior.

    Espero que esto ayude.