def import_csv_to_sitewise()

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


    def import_csv_to_sitewise(self, csv_file):
        assetModelPrefix = self.assetModelPrefix;
        self.log(f'Import {csv_file} to sitewise with model prefix {assetModelPrefix} ...')
        data = self.get_data_set(csv_file)

        populated = False

        for compType, compData in data.items():
            assetModelName = assetModelPrefix + '__' + compType

            assetModelRes = self.create_asset_model(assetModelName)

            min_time_ms = sys.maxsize
            max_time_ms = 0

            for measureName, measureData in compData.items():
                current_epoch = self.get_current_epoch_in_ms()
                measureMinTime = measureData['minTime']
                time_delta = current_epoch - measureMinTime
                measureDataType = measureData['measureDataType']
                
                assetModel = self.iotsitewise.describe_asset_model(assetModelId = assetModelRes['assetModelId'])
                
                measureProperty = self.create_asset_model_property(assetModel, measureName, measureDataType)

                for entityId, entityData in measureData['entities'].items():
                    if self.entity_include_pattern is not None and self.entity_include_pattern in entityId:
                        assetName = assetModelName + '_' + entityId
                        asset = self.create_asset(assetName, assetModel['assetModelId'])
                        self.log(f'...created sitewise asset: {asset["assetArn"]}')
                        (result, _min_time_ms, _max_time_ms) = self.write_sitewise(asset['assetId'], measureProperty['id'], measureDataType, entityData, time_delta)
                        min_time_ms = min(_min_time_ms, min_time_ms)
                        max_time_ms = max(_max_time_ms, max_time_ms)
                        populated = True
                        self.log(f'...imported sitewise data for asset: {asset["assetArn"]}')
                    else:
                        self.debug(f'...skipping asset creation for entity not matching pattern: {entityId}')
        if populated:
            self.log(f'Import to sitewise completed. Data ingested from '
                    f"{datetime.datetime.fromtimestamp(min_time_ms/1000, datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S %Z')} - "
                    f"{datetime.datetime.fromtimestamp(max_time_ms/1000, datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S %Z')}")