def get_data_set()

in src/modules/sitewise/lib/util/SiteWiseTelemetryUtils.py [0:0]


    def get_data_set(self, csv_file):
        # { 
        #    compType : {   # compData
        #        measureName : { # measureData
        #            entities: {
        #                entityId: [{ time, measure_value } ],
        #            }
        #            measureDataType : {},
        # .          minTime:  #init with current epoch
        #        }
        #    }
        # }

        # compType -> AssetMode
        #     measureName, measureType -> properties: [ { measure_name, measure_type} ] 
        # entityId -> assetId
        # timeseries -> values

        data = {}

        with open(csv_file, 'r') as dataFile:
            csv_reader = csv.reader(dataFile)
            self.log('0:time, 1:comp_type, 2:entity_id, 3:measure_name, 4:measure_value, 5:measure_type')
            i = 0
            for row in csv_reader:

                i += 1

                epochInMs = int(row[0])
                compType = row[1]
                compData = data.get(compType)
                if compData is None:
                    data[compType] = {}
                    compData = data[compType]

                measureName = row[3]
                measureData = compData.get(measureName)
                if measureData is None:
                    compData[measureName] = {
                        'minTime': epochInMs,
                        'measureDataType': row[5],
                        'entities': {}
                    }
                    measureData = compData[measureName]
                    
                measureMinTime = measureData['minTime']
                measureData['minTime'] = self.min_epoch(measureMinTime, epochInMs)

                entities = measureData['entities']
                entityId = row[2]
                entityData = entities.get(entityId)
                if entityData is None:
                    entities[entityId] = []
                    entityData = entities[entityId]
                
                tsData = {
                    'time': epochInMs,
                    'measureValue': row[4]
                }
                entityData.append(tsData)

        self.log(f'lines: {i}')
        return data