Forum Discussion

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

Falla la dependencia circular con diff de fecha

El objetivo es crear una columna calculada que contará el número de días entre la última transacción y hoy. Actualmente he calculado columna que marcará la transacción más reciente para cada tienda. ...
  • Syndicate_Admin's avatar
    5 years ago

    Allí @win_anthony

    Intente reescribir su primera columna calculada de esta forma:

    latest_welcome_transaction_flag = 
    VAR LatestWelcomeDatePerStore = 
        CALCULATE ( 
            MAX ( 'table'[date] ),
            ALLEXCEPT ( 'table', 'table'[store_id] ),
            LEFT ( 'table'[status], 7 ) = "Welcome"
        )
    RETURN
        IF ( 'table'[date] = LatestWelcomeDatePerStore, 1 )

    He simplificado un poco el código y me he asegurado de que la función CALCULATE, a la que se llama en el contexto de fila de la tabla, incluya un ALLEXCEPT que quita filtros en todas las columnas excepto store_id.

    Originalmente, la llamada más externa a CALCULATE agregó filtros correspondientes a todas las columnas, incluido # de Days Since Last Transaction.WelComeOpp, que creó una referencia circular.

    Cada vez que se llama a CALCULATE en una columna calculada, la "transición de contexto" hace que los valores de todas las columnas de la fila actual se conviertan en un filtro equivalente, a menos que esas columnas se excluyan del contexto de filtro resultante mediante ALLEXCEPT/REMOVEFILTERS.

    Hay un buen artículo sobre este tema general aquí en SQLBI.

    saludos

    Owen