in tsfile-viewer-core/src/main/java/org/apache/iotdb/tool/core/service/TsFileAnalyserV13.java [859:929]
public AnalysedResultModel fetchAnalysedResultWithDeviceAndMeasurement(
String deviceId, String measurement) throws IOException {
List<ChunkMetadata> chunkMetadataList =
fetchChunkListsByDeviceIdAndMeasurementId(deviceId, measurement);
AnalysedResultModel resultModel = new AnalysedResultModel();
int countSize = 0;
long startTime = System.currentTimeMillis();
List<EncodeCompressAnalysedModel> allModelList = new ArrayList<>();
Map<String, EncodeCompressAnalysedModel> map = new HashMap<>();
String currentKey = "";
for (IChunkMetadata metadata : chunkMetadataList) {
long startTime1 = System.currentTimeMillis();
List<IPageInfo> pageInfoList = fetchPageInfoListByChunkMetadata(metadata);
for (IPageInfo pageInfo : pageInfoList) {
if (Objects.equals(currentKey, "")) {
currentKey =
pageInfo.getEncodingType().name() + "-" + pageInfo.getCompressionType().name();
}
if ((pageInfo.getChunkType() & TsFileConstant.VALUE_COLUMN_MASK)
== TsFileConstant.VALUE_COLUMN_MASK) {
// tsPrimitive
TsPrimitiveType[] values = fetchValueBatch(pageInfo);
countSize += values.length;
List<EncodeCompressAnalysedModel> models =
generateEncodeAndCompressAnalysedWithTsPrimitives(values);
if (models != null) {
allModelList.addAll(models);
}
} else {
// BatchData
BatchData batchData = fetchBatchDataByPageInfo(pageInfo);
countSize += batchData.length();
List<EncodeCompressAnalysedModel> models =
generateEncodeAndCompressAnalysedWithBatchData(batchData);
if (models != null) {
allModelList.addAll(models);
}
}
}
logger.info(
"metaData cost : "
+ metadata.getMeasurementUid()
+ (System.currentTimeMillis() - startTime1)
+ " countSize : "
+ countSize);
}
for (EncodeCompressAnalysedModel model : allModelList) {
String key = model.getEncodeName() + "-" + model.getCompressName();
if (map.containsKey(key)) {
EncodeCompressAnalysedModel existModel = map.get(key);
existModel.setOriginSize(existModel.getOriginSize() + model.getOriginSize());
existModel.setEncodedSize(existModel.getEncodedSize() + model.getEncodedSize());
existModel.setCompressedSize(existModel.getCompressedSize() + model.getCompressedSize());
existModel.setUncompressSize(existModel.getUncompressSize() + model.getUncompressSize());
existModel.setCompressedCost(existModel.getCompressedCost() + model.getCompressedCost());
} else {
map.put(key, model);
}
}
logger.info(
"encode analyse cost : "
+ (System.currentTimeMillis() - startTime)
+ " countSize : "
+ countSize);
List<EncodeCompressAnalysedModel> sortedModels = sortedAnalysedModel(map);
resultModel.setAnalysedList(sortedModels);
resultModel.setCurrentAnalysed(map.get(currentKey));
return resultModel;
}