public void parseIntoItemIfNecessary() {
    if (this.batchGenerationItem != null) {
      List<Expression> sourceExpressionList = this.getSourceExpressionList();
      IntoComponent intoComponent =
          new IntoComponent(Collections.singletonList(this.batchGenerationItem));
      intoComponent.validate(sourceExpressionList);
      IntoComponent.IntoPathIterator intoPathIterator = intoComponent.getIntoPathIterator();
      List<PartialPath> targetPathsList = new ArrayList<>();
      for (Expression sourceColumn : sourceExpressionList) {
        PartialPath deviceTemplate = intoPathIterator.getDeviceTemplate();
        String measurementTemplate = intoPathIterator.getMeasurementTemplate();

        if (sourceColumn instanceof TimeSeriesOperand) {
          PartialPath sourcePath = ((TimeSeriesOperand) sourceColumn).getPath();
          targetPathsList.add(
              SelectIntoUtils.constructTargetPath(sourcePath, deviceTemplate, measurementTemplate));
        } else {
          throw new SemanticException(
              new UnsupportedViewException(
                  "Cannot create views using data sources with calculated expressions while using into item."));
        }
      }
      this.targetPaths.setFullPathList(targetPathsList);
    }
  }
This function must be called after analyzing read statement. Expressions that analyzed should
be set through here.

@param expressionList
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/view/CreateLogicalViewStatement.java