Forum Discussion

arzukari's avatar
arzukari
Frequent Visitor
6 years ago
Solved

Calculated Colomn taking too much memory

Hello,   I'm using a tabular model that feeds into report server power bi.   The issue is I have a table with over 18 million rows with patient ids and their test results. The client wants to exp...
  • Anonymous's avatar
    Anonymous
    6 years ago

     

    // The easiest way to generate PatientID's is to exec:
    [Calculated Table] = // calculated table
        distinct( 'Main Table'[PatientID] )
    
    // I understand you want to get the first result
    // for the patient which means the result on the
    // very first date recorded in the table. To get
    // such a result, all of them must be ordered. I assume
    // that only 1 result is possible for any patient
    // on any single date. If this is not true, you have
    // to have something (e.g., a time column) that would
    // be used to break ties. Please steer clear of
    // CALCULATE in calculated columns as this will
    // slow down calculations and will in fact bring them
    // to a halt for big tables.
    First Result = // calculated column in the 2nd table
    var __patientId = 'Calculated Table'[PatientID]
    var __result =
        MAXX(
            // Again, this will work OK only if
            // there are no ties for the same
            // patient id on the same day.
            TOPN(1,
                filter(
                    'Main Table',
                    'Main Table'[PatientID] = __patientId
                    // I also assume that there are no
                    // blanks in the Result column. If
                    // there are you have to filter them
                    // out like:
                    // 'Main Table'[Result] <> BLANK()
                ),
                'Main Table'[Result Date],
                DESC
                // If you have a column to break ties
                // you'll put it in here as well specifing
                // it's order. If it were a time column,
                // you'd write
                // 'Main Table'[Result Time],
                // DESC
            ),
            'Main Table'[Result]
        )
    return
        __result