@TableModel
  public IDeviceID getTableDeviceID() {
    if (deviceID == null) {
      String[] deviceIdSegments = new String[getIdColumnIndices().size() + 1];
      deviceIdSegments[0] = this.getTableName();
      for (int i = 0; i < getIdColumnIndices().size(); i++) {
        final Integer columnIndex = getIdColumnIndices().get(i);
        deviceIdSegments[i + 1] =
            values[columnIndex] != null ? values[columnIndex].toString() : null;
      }
      deviceID = Factory.DEFAULT_FACTORY.create(deviceIdSegments);
    }

    return deviceID;
  }
transfer String[] values to specific data types when isNeedInferType is true. <br>
Notice: measurementSchemas must be initialized before calling this method
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertRowStatement.java