diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java
index 96ea3e06a08f..a6add863e085 100644
--- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java
+++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityTimeSeriesDAO.java
@@ -22,6 +22,7 @@
import org.openmetadata.schema.utils.JsonUtils;
import org.openmetadata.service.jdbi3.locator.ConnectionAwareSqlQuery;
import org.openmetadata.service.jdbi3.locator.ConnectionAwareSqlUpdate;
+import org.openmetadata.service.util.FullyQualifiedName;
import org.openmetadata.service.util.RestUtil;
import org.openmetadata.service.util.jdbi.BindFQN;
@@ -530,6 +531,18 @@ default void delete(String entityFQNHash, String extension) {
delete(getTimeSeriesTableName(), entityFQNHash, extension);
}
+ @SqlUpdate(
+ "DELETE FROM
WHERE entityFQNHash LIKE :fqnHashPrefix AND extension = :extension")
+ void deleteByFQNPrefix(
+ @Define("table") String table,
+ @Bind("fqnHashPrefix") String fqnHashPrefix,
+ @Bind("extension") String extension);
+
+ default void deleteByFQNPrefix(String entityFQN, String extension) {
+ String hashPrefix = FullyQualifiedName.buildHash(entityFQN) + ".%";
+ deleteByFQNPrefix(getTimeSeriesTableName(), hashPrefix, extension);
+ }
+
@SqlUpdate(
"DELETE FROM WHERE entityFQNHash = :entityFQNHash AND extension = :extension AND timestamp = :timestamp")
void deleteAtTimestamp(
diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java
index 453e301021f6..aa6ad3347094 100644
--- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java
+++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/TableRepository.java
@@ -1154,6 +1154,16 @@ public void deleteTableProfile(String fqn, String entityType, Long timestamp) {
daoCollection.profilerDataTimeSeriesDao().deleteAtTimestamp(fqn, extension, timestamp);
}
+ @Override
+ protected void entitySpecificCleanup(Table table) {
+ String fqn = table.getFullyQualifiedName();
+ daoCollection.profilerDataTimeSeriesDao().delete(fqn, TABLE_PROFILE_EXTENSION);
+ daoCollection.profilerDataTimeSeriesDao().delete(fqn, SYSTEM_PROFILE_EXTENSION);
+ daoCollection
+ .profilerDataTimeSeriesDao()
+ .deleteByFQNPrefix(fqn, TABLE_COLUMN_PROFILE_EXTENSION);
+ }
+
public ResultList getTableProfiles(String fqn, Long startTs, Long endTs) {
List entityProfiles;
List tableProfiles;