private static StructLikeMap<Long> readFromStatisticsFile(
      UnkeyedTable table, long snapshotId, String type) {
    Snapshot snapshot = table.snapshot(snapshotId);
    Preconditions.checkArgument(snapshot != null, "Snapshot %s not found", snapshotId);
    Snapshot snapshotContainsType = findLatestValidSnapshot(table, snapshotId, isTypeExist(type));
    if (snapshotContainsType == null) {
      // Return null to read from legacy partition properties
      return null;
    }
    List<StatisticsFile> statisticsFiles =
        StatisticsFileUtil.getStatisticsFiles(table, snapshotContainsType.snapshotId(), type);
    Preconditions.checkState(
        !statisticsFiles.isEmpty(), "Statistics file not found for snapshot %s", snapshotId);
    Preconditions.checkState(
        statisticsFiles.size() == 1,
        "There should be only one statistics file for snapshot %s",
        snapshotId);
    List<StructLikeMap<Long>> result =
        StatisticsFileUtil.reader(table)
            .read(
                statisticsFiles.get(0),
                type,
                StatisticsFileUtil.createPartitionDataSerializer(table.spec(), Long.class));
    if (result.size() != 1) {
      throw new IllegalStateException(
          "There should be only one partition data in statistics file for blob type " + type);
    }
    return result.get(0);
  }
Return the table root location of the mixed-format table.
amoro-format-iceberg/src/main/java/org/apache/amoro/utils/MixedTableUtil.java