public void outputDirtyMetrics(String index, long rowCount, long rowSize) {
        if (StringUtils.isBlank(index)) {
            invokeDirty(rowCount, rowSize);
            return;
        }
        SinkMetricData subSinkMetricData;
        if (subSinkMetricMap.containsKey(index)) {
            subSinkMetricData = subSinkMetricMap.get(index);
        } else {
            subSinkMetricData = buildSubSinkMetricData(new String[]{index}, this);
            subSinkMetricMap.put(index, subSinkMetricData);
        }
        // sink metric and sub sink metric output metrics
        this.invokeDirty(rowCount, rowSize);
        subSinkMetricData.invokeDirty(rowCount, rowSize);
    }
output dirty metrics

@param index the table name of record
@param rowCount the row count of records
@param rowSize the row size of records
inlong-sort/sort-flink/base/src/main/java/org/apache/inlong/sort/base/metric/sub/SinkTableMetricData.java