public AnalysedResultModel fetchAnalysedResultWithDeviceAndMeasurement()

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;
  }