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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

GENERATESERIES con SELECTEDVALUE

El archivo de muestra PBIX está aquí: https://drive.google.com/file/d/13w7kMB_WKJABXnezPOrQhqlOFUXP4Wcl/view?usp=sharing

Estoy tratando de permitir que un usuario cree efectivamente una tabla calculada de un punto de inicio y un punto final entre dos meses usando GENERATESERIES. En la captura de pantalla a continuación, puedo ingresar el "Mes de inicio" y la "Duración" y eso funciona bien.

Cuando creo una tabla calculada (o parámetro) usando lo siguiente, obtengo un error "Los argumentos en la función GenerateSeries no pueden estar en blanco"

¿Alguna forma de solucionar / resolver esto? ¡Gracias!

Parameter = 

GENERATESERIES(
    _Measures[Measure - Start Month]
    , 60
    , 1)

mrothschild_0-1678301172041.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@v-cgao-msft Gracias.

Lo siguiente es tanto para mí como para otros que se encuentran con este feed. PowerBI no puede crear una nueva tabla calculada utilizando la entrada de segmentaciones de datos. Sin embargo, puede crear una tabla calculada virtual en una medida que puede obtener los resultados que desea, pero es difícil de auditar. En consecuencia, le recomiendo que cree una tabla calculada con entradas "codificadas" para auditar/programar/compilar, mientras replica la salida de medida que busca utilizando la tabla virtual con fines dinámicos.

Esta es mi tabla calculada de auditoría. Notará que el RETORNO tiene que ser una tabla.

zzNewTable = 

VAR StrtDate =
    DATE ( 2023, 6, 1 )

VAR EndDate = 
    EOMONTH(StrtDate,60+1)

VAR CalMth =

    GENERATESERIES (
        0,
        DATEDIFF (
            StrtDate,
            EndDate,
            MONTH
        ),
        1
    )


// NetRent = AcquisitionCost * LRF * (1-TechServicingFee)
VAR NetRent =   
         10000 * 0.015 * (1-0.05)

// Deployment = AcquisitionCost - LeaseTransactionCosts
VAR Deployment =   
         10000 + 50


// Exit = AcquisitionCost * RV% - LeaseTransitionCosts
VAR Exit =   
         10000 * 0.75 - 50


VAR T1_1 = 
    ADDCOLUMNS(
        CalMth,
        "Date",
            IF([Value]=0,EOMONTH(StrtDate,[Value]),EOMONTH(StrtDate,[Value]-1)+1),
        "@AcqCost",
        10000,        
        "@LRF",
        0.015,
        "@RV%",
        0.75,
        "@LeaseTerm",
        60,
        "@NetRent",
            IF([Value]=0,(-1)*Deployment,IF([Value]=61,Exit,NetRent)) ,
        
        
        "@StartMonth",
        6
    )

VAR UnlevIRR = 
    XIRR(T1_1,[@NetRent],[Date])
    

RETURN
T1_1

Esta es mi medida. Notará que el RETORNO debe ser una medida (y no una tabla)

zzVirtual Table Measure = 

VAR StrtDate =
    DATE ( [Measure - Start Year], [Measure - Start Month], 1 )

VAR EndDate = 
    EOMONTH(StrtDate,[Measure - Lease Term]+1)

VAR CalMth =
    GENERATESERIES (0, DATEDIFF (StrtDate, EndDate, MONTH ), 1  )

// NetRent = AcquisitionCost * LRF * (1-TechServicingFee)
VAR NetRent =   
//         10000 * 0.015 * (1-0.05)
    [Measure - Acquisition Price] * [Measure - Lease Rate Factor] * (1-[Measure - Technical Servicing Fee])



// Deployment = AcquisitionCost - LeaseTransactionCosts
VAR Deployment =   
//        10000 + 50
        [Measure - Acquisition Price] + [Measure - Lease Transaction Costs]

// Exit = AcquisitionCost * RV% - LeaseTransitionCosts
VAR Exit =   
//        10000 * 0.75 - 50
        [Measure - Acquisition Price] * [Measure - Residual Percentage] - [Measure - Lease Transaction Costs]

VAR T1_1 = 
    ADDCOLUMNS(
        CalMth,
        "Date",
            IF([Value]=0,EOMONTH(StrtDate,[Value]),EOMONTH(StrtDate,[Value]-1)+1),
        "@AcqCost",
        10000,        
        "@LRF",
        0.015,
        "@RV%",
        0.75,
        "@LeaseTerm",
        60,
        "@NetRent",
            IF([Value]=0,(-1)*Deployment,IF([Value]=[Measure - Lease Term]+1,Exit,NetRent)) ,
        
        
        "@StartMonth",
        6
    )

VAR UnlevIRR = 
    XIRR(T1_1,[@NetRent],[Date])
       
RETURN
UnlevIRR

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@v-cgao-msft Gracias.

Lo siguiente es tanto para mí como para otros que se encuentran con este feed. PowerBI no puede crear una nueva tabla calculada utilizando la entrada de segmentaciones de datos. Sin embargo, puede crear una tabla calculada virtual en una medida que puede obtener los resultados que desea, pero es difícil de auditar. En consecuencia, le recomiendo que cree una tabla calculada con entradas "codificadas" para auditar/programar/compilar, mientras replica la salida de medida que busca utilizando la tabla virtual con fines dinámicos.

Esta es mi tabla calculada de auditoría. Notará que el RETORNO tiene que ser una tabla.

zzNewTable = 

VAR StrtDate =
    DATE ( 2023, 6, 1 )

VAR EndDate = 
    EOMONTH(StrtDate,60+1)

VAR CalMth =

    GENERATESERIES (
        0,
        DATEDIFF (
            StrtDate,
            EndDate,
            MONTH
        ),
        1
    )


// NetRent = AcquisitionCost * LRF * (1-TechServicingFee)
VAR NetRent =   
         10000 * 0.015 * (1-0.05)

// Deployment = AcquisitionCost - LeaseTransactionCosts
VAR Deployment =   
         10000 + 50


// Exit = AcquisitionCost * RV% - LeaseTransitionCosts
VAR Exit =   
         10000 * 0.75 - 50


VAR T1_1 = 
    ADDCOLUMNS(
        CalMth,
        "Date",
            IF([Value]=0,EOMONTH(StrtDate,[Value]),EOMONTH(StrtDate,[Value]-1)+1),
        "@AcqCost",
        10000,        
        "@LRF",
        0.015,
        "@RV%",
        0.75,
        "@LeaseTerm",
        60,
        "@NetRent",
            IF([Value]=0,(-1)*Deployment,IF([Value]=61,Exit,NetRent)) ,
        
        
        "@StartMonth",
        6
    )

VAR UnlevIRR = 
    XIRR(T1_1,[@NetRent],[Date])
    

RETURN
T1_1

Esta es mi medida. Notará que el RETORNO debe ser una medida (y no una tabla)

zzVirtual Table Measure = 

VAR StrtDate =
    DATE ( [Measure - Start Year], [Measure - Start Month], 1 )

VAR EndDate = 
    EOMONTH(StrtDate,[Measure - Lease Term]+1)

VAR CalMth =
    GENERATESERIES (0, DATEDIFF (StrtDate, EndDate, MONTH ), 1  )

// NetRent = AcquisitionCost * LRF * (1-TechServicingFee)
VAR NetRent =   
//         10000 * 0.015 * (1-0.05)
    [Measure - Acquisition Price] * [Measure - Lease Rate Factor] * (1-[Measure - Technical Servicing Fee])



// Deployment = AcquisitionCost - LeaseTransactionCosts
VAR Deployment =   
//        10000 + 50
        [Measure - Acquisition Price] + [Measure - Lease Transaction Costs]

// Exit = AcquisitionCost * RV% - LeaseTransitionCosts
VAR Exit =   
//        10000 * 0.75 - 50
        [Measure - Acquisition Price] * [Measure - Residual Percentage] - [Measure - Lease Transaction Costs]

VAR T1_1 = 
    ADDCOLUMNS(
        CalMth,
        "Date",
            IF([Value]=0,EOMONTH(StrtDate,[Value]),EOMONTH(StrtDate,[Value]-1)+1),
        "@AcqCost",
        10000,        
        "@LRF",
        0.015,
        "@RV%",
        0.75,
        "@LeaseTerm",
        60,
        "@NetRent",
            IF([Value]=0,(-1)*Deployment,IF([Value]=[Measure - Lease Term]+1,Exit,NetRent)) ,
        
        
        "@StartMonth",
        6
    )

VAR UnlevIRR = 
    XIRR(T1_1,[@NetRent],[Date])
       
RETURN
UnlevIRR
Syndicate_Admin
Administrator
Administrator

@mrothschild ,

El primer parámetro [Medida - Mes de inicio] está en blanco en este momento, pruebe esta medida.

Measure - Start Month = 
 
SELECTEDVALUE('Input - Lease Start Month'[Lease Start Month],MIN('Input - Lease Start Month'[Lease Start Month]))

VALOR SELECCIONADO

Se puede hacer referencia a la medida en una tabla/columna de cálculo, pero en este caso la tabla/columna de cálculo fuerza el cálculo de la medida en el contexto definido actualmente. Esta operación traduce e integra el resultado de la medida en una columna, que no se ve afectada por las acciones del usuario (por ejemplo, cambiar la segmentación de datos).

Saludos
Gao

Equipo de apoyo a la comunidad

Si hay alguna publicación de ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente. Si no entiendo sus necesidades o todavía tiene problemas al respecto, no dude en hacérnoslo saber. ¡Muchas gracias!

Cómo obtener respuestas rápidas a sus preguntas -- Cómo proporcionar datos de ejemplo en el foro de Power BI

@v-cgao-msft

Gracias por los comentarios. Desafortunadamente, eso no resuelve el problema. El resultado previsto en este ejemplo es crear una tabla calculada que comience en el número seleccionado por el usuario en [Medida]. Entonces, en la situación anterior, la tabla consistiría en una columna de números enteros del 2 al 60. Si cambiara "Mes de inicio de arrendamiento" a 6, cambiaría de 6 a 60.

Aquí está el resultado de lo que proporcionó su sugerencia:

mrothschild_0-1678457460742.png

@mrothschild ,

Se puede hacer referencia a la medida en una tabla/columna de cálculo, pero en este caso la tabla/columna de cálculo fuerza el cálculo de la medida en el contexto definido actualmente. Esta operación traduce e integra el resultado de la medida en una columna, que no se ve afectada por las acciones del usuario (por ejemplo, cambiar la segmentación de datos).

En el modo de importación, las columnas o tablas calculadas se almacenan en la memoria y se vuelven a calcular solo cuando se actualiza la tabla o la memoria, y el usuario cambia el comportamiento de la segmentación de datos no afecta a las columnas o tablas calculadas.

Supongo que desea crear una tabla dinámica basada en los valores seleccionados de la segmentación de datos, pero eso no es posible.

Puedes votar por una idea similar.

Saludos
Gao

Equipo de apoyo a la comunidad

Saludos
Gao

Equipo de apoyo a la comunidad

Si hay alguna publicación de ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente. Si no entiendo sus necesidades o todavía tiene problemas al respecto, no dude en hacérnoslo saber. ¡Muchas gracias!

Cómo obtener respuestas rápidas a sus preguntas -- Cómo proporcionar datos de ejemplo en el foro de Power BI

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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