diff --git a/db/click_house/migrate/main/20240703165200_recreate_ci_finished_pipelines_table.rb b/db/click_house/migrate/main/20240703165200_recreate_ci_finished_pipelines_table.rb
new file mode 100644
index 0000000000000000000000000000000000000000..3ac9b87a5543aca5c41bbf26446b21400683a9fe
--- /dev/null
+++ b/db/click_house/migrate/main/20240703165200_recreate_ci_finished_pipelines_table.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+class RecreateCiFinishedPipelinesTable < ClickHouse::Migration
+  def up
+    execute <<~SQL
+      DROP TABLE IF EXISTS ci_finished_pipelines
+    SQL
+
+    execute <<~SQL
+      CREATE TABLE ci_finished_pipelines
+      (
+        `id` UInt64 DEFAULT 0,
+        `path` String DEFAULT '0/',
+        `committed_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `created_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `started_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `finished_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `duration` UInt64 DEFAULT 0,
+        `date` Date32 MATERIALIZED toStartOfMonth(finished_at),
+        `status` LowCardinality(String) DEFAULT '',
+        `source` LowCardinality(String) DEFAULT '',
+        `ref` String DEFAULT ''
+      )
+      ENGINE = ReplacingMergeTree
+      PARTITION BY toYear(finished_at)
+      ORDER BY (id)
+    SQL
+  end
+
+  def down
+    execute <<~SQL
+      DROP TABLE IF EXISTS ci_finished_pipelines
+    SQL
+
+    execute <<~SQL
+      CREATE TABLE ci_finished_pipelines
+      (
+        `id` UInt64 DEFAULT 0,
+        `project_id` UInt64 DEFAULT 0,
+        `committed_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `created_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `started_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `finished_at` DateTime64(6, 'UTC') DEFAULT 0,
+        `duration` Int64,
+        `date` Date32 MATERIALIZED toStartOfMonth(finished_at),
+        `status` LowCardinality(String) DEFAULT '',
+        `source` LowCardinality(String) DEFAULT '',
+        `ref` String DEFAULT ''
+      )
+      ENGINE = ReplacingMergeTree
+      PARTITION BY toYear(finished_at)
+      ORDER BY (id)
+    SQL
+  end
+end