@@ -0,0 +1,33 @@
|
||||
CREATE TABLE IF NOT EXISTS biz_shop_data_crawl_daily_file (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
user_id BIGINT NOT NULL,
|
||||
shop_key_hash CHAR(64) NOT NULL,
|
||||
shop_key VARCHAR(1000) NOT NULL,
|
||||
business_date DATE NOT NULL,
|
||||
latest_task_id BIGINT NULL,
|
||||
latest_result_id BIGINT NULL,
|
||||
result_filename VARCHAR(255) NULL,
|
||||
result_file_url VARCHAR(1000) NULL,
|
||||
result_file_size BIGINT NULL,
|
||||
result_content_type VARCHAR(128) NULL,
|
||||
row_count INT NULL,
|
||||
version BIGINT NOT NULL DEFAULT 0,
|
||||
last_success_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_shop_data_crawl_daily_file (user_id, shop_key_hash, business_date),
|
||||
KEY idx_shop_data_crawl_daily_result (latest_result_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS biz_shop_data_crawl_daily_member (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
daily_file_id BIGINT NOT NULL,
|
||||
task_id BIGINT NOT NULL,
|
||||
result_id BIGINT NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_shop_data_crawl_daily_member_result (result_id),
|
||||
KEY idx_shop_data_crawl_daily_member_file_result (daily_file_id, result_id),
|
||||
KEY idx_shop_data_crawl_daily_member_task (task_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,74 @@
|
||||
SET @invalid_asin_group_id_col_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'biz_invalid_asin_data'
|
||||
AND COLUMN_NAME = 'group_id'
|
||||
);
|
||||
|
||||
SET @sql_add_invalid_asin_group_id := IF(
|
||||
@invalid_asin_group_id_col_exists = 0,
|
||||
'ALTER TABLE biz_invalid_asin_data ADD COLUMN group_id BIGINT NULL AFTER brand',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_invalid_asin_group_id FROM @sql_add_invalid_asin_group_id;
|
||||
EXECUTE stmt_add_invalid_asin_group_id;
|
||||
DEALLOCATE PREPARE stmt_add_invalid_asin_group_id;
|
||||
|
||||
SET @invalid_asin_record_source_col_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'biz_invalid_asin_data'
|
||||
AND COLUMN_NAME = 'record_source'
|
||||
);
|
||||
|
||||
SET @sql_add_invalid_asin_record_source := IF(
|
||||
@invalid_asin_record_source_col_exists = 0,
|
||||
'ALTER TABLE biz_invalid_asin_data ADD COLUMN record_source VARCHAR(16) NOT NULL DEFAULT ''AUTO'' AFTER group_id',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_invalid_asin_record_source FROM @sql_add_invalid_asin_record_source;
|
||||
EXECUTE stmt_add_invalid_asin_record_source;
|
||||
DEALLOCATE PREPARE stmt_add_invalid_asin_record_source;
|
||||
|
||||
-- Historical rows have no reliable origin marker. Treat them as automatic rows.
|
||||
UPDATE biz_invalid_asin_data
|
||||
SET record_source = 'AUTO'
|
||||
WHERE record_source IS NULL
|
||||
OR TRIM(record_source) = ''
|
||||
OR UPPER(TRIM(record_source)) NOT IN ('AUTO', 'MANUAL');
|
||||
|
||||
SET @invalid_asin_source_group_index_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'biz_invalid_asin_data'
|
||||
AND INDEX_NAME = 'idx_invalid_asin_source_group_id'
|
||||
);
|
||||
|
||||
SET @sql_add_invalid_asin_source_group_index := IF(
|
||||
@invalid_asin_source_group_index_exists = 0,
|
||||
'ALTER TABLE biz_invalid_asin_data ADD INDEX idx_invalid_asin_source_group_id (record_source, group_id, id)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_invalid_asin_source_group_index FROM @sql_add_invalid_asin_source_group_index;
|
||||
EXECUTE stmt_add_invalid_asin_source_group_index;
|
||||
DEALLOCATE PREPARE stmt_add_invalid_asin_source_group_index;
|
||||
|
||||
SET @invalid_asin_group_index_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'biz_invalid_asin_data'
|
||||
AND INDEX_NAME = 'idx_invalid_asin_group_id'
|
||||
);
|
||||
|
||||
SET @sql_add_invalid_asin_group_index := IF(
|
||||
@invalid_asin_group_index_exists = 0,
|
||||
'ALTER TABLE biz_invalid_asin_data ADD INDEX idx_invalid_asin_group_id (group_id)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_invalid_asin_group_index FROM @sql_add_invalid_asin_group_index;
|
||||
EXECUTE stmt_add_invalid_asin_group_index;
|
||||
DEALLOCATE PREPARE stmt_add_invalid_asin_group_index;
|
||||
@@ -0,0 +1,53 @@
|
||||
SET @dedupe_group_id_col_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'biz_dedupe_total_data'
|
||||
AND COLUMN_NAME = 'group_id'
|
||||
);
|
||||
|
||||
SET @sql_add_dedupe_group_id := IF(
|
||||
@dedupe_group_id_col_exists = 0,
|
||||
'ALTER TABLE biz_dedupe_total_data ADD COLUMN group_id BIGINT NULL AFTER data_value',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_dedupe_group_id FROM @sql_add_dedupe_group_id;
|
||||
EXECUTE stmt_add_dedupe_group_id;
|
||||
DEALLOCATE PREPARE stmt_add_dedupe_group_id;
|
||||
|
||||
UPDATE biz_dedupe_total_data d
|
||||
JOIN (
|
||||
SELECT matched.id, MIN(matched.group_id) AS group_id
|
||||
FROM (
|
||||
SELECT d0.id, g.id AS group_id
|
||||
FROM biz_dedupe_total_data d0
|
||||
INNER JOIN biz_shop_manage_group g
|
||||
ON COALESCE(g.created_by_id, g.user_id) = d0.uploader_user_id
|
||||
UNION
|
||||
SELECT d1.id, gm.group_id
|
||||
FROM biz_dedupe_total_data d1
|
||||
INNER JOIN biz_shop_manage_group_member gm
|
||||
ON gm.user_id = d1.uploader_user_id
|
||||
) matched
|
||||
GROUP BY matched.id
|
||||
HAVING COUNT(DISTINCT matched.group_id) = 1
|
||||
) resolved ON resolved.id = d.id
|
||||
SET d.group_id = resolved.group_id
|
||||
WHERE d.group_id IS NULL;
|
||||
|
||||
SET @dedupe_group_idx_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'biz_dedupe_total_data'
|
||||
AND INDEX_NAME = 'idx_dedupe_total_data_group_id'
|
||||
);
|
||||
|
||||
SET @sql_add_dedupe_group_idx := IF(
|
||||
@dedupe_group_idx_exists = 0,
|
||||
'ALTER TABLE biz_dedupe_total_data ADD INDEX idx_dedupe_total_data_group_id (group_id, id)',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE stmt_add_dedupe_group_idx FROM @sql_add_dedupe_group_idx;
|
||||
EXECUTE stmt_add_dedupe_group_idx;
|
||||
DEALLOCATE PREPARE stmt_add_dedupe_group_idx;
|
||||
Reference in New Issue
Block a user