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')}")