private void applyDeleteExpression() {
    if (this.deleteExpressionApplied) {
      return;
    }
    if (this.deleteExpression == null) {
      return;
    }
    try (CloseableIterable<CombinedScanTask> combinedScanTasks =
        keyedTable.newScan().filter(deleteExpression).planTasks()) {
      combinedScanTasks.forEach(
          combinedTask ->
              combinedTask
                  .tasks()
                  .forEach(
                      t -> {
                        t.dataTasks().forEach(ft -> deleteFiles.add(ft.file()));
                        t.mixedEquityDeletes().forEach(ft -> deleteFiles.add(ft.file()));
                      }));
      this.deleteExpressionApplied = true;
    } catch (IOException e) {
      throw new IllegalStateException(
          "failed when apply delete expression when overwrite files", e);
    }
  }
Update optimized sequence for changed partitions. The files of ChangeStore whose sequence is
bigger than optimized sequence should migrate to BaseStore later.

@param sequence - optimized sequence
@return this for chain
amoro-format-iceberg/src/main/java/org/apache/amoro/op/OverwriteBaseFiles.java