Forum Discussion

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

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 cal...
  • Syndicate_Admin's avatar
    3 years ago

    @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