-- 清空现有数据(可选) TRUNCATE TABLE IF EXISTS limq.link_events; TRUNCATE TABLE IF EXISTS limq.link_daily_stats; TRUNCATE TABLE IF EXISTS limq.link_hourly_patterns; TRUNCATE TABLE IF EXISTS limq.links; -- 使用固定的UUID值插入链接 INSERT INTO limq.links ( link_id, original_url, created_at, created_by, title, description, tags, is_active ) VALUES ( '11111111-1111-1111-1111-111111111111', 'https://example.com/page1', now(), 'user-1', '产品页面', '我们的主要产品页面', [ '产品', '营销' ], true ); INSERT INTO limq.links ( link_id, original_url, created_at, created_by, title, description, tags, is_active ) VALUES ( '22222222-2222-2222-2222-222222222222', 'https://example.com/promo', now(), 'user-1', '促销活动', '夏季特别促销活动', [ '促销', '活动' ], true ); INSERT INTO limq.links ( link_id, original_url, created_at, created_by, title, description, tags, is_active ) VALUES ( '33333333-3333-3333-3333-333333333333', 'https://example.com/blog', now(), 'user-2', '公司博客', '公司新闻和更新', [ '博客', '内容' ], true ); INSERT INTO limq.links ( link_id, original_url, created_at, created_by, title, description, tags, is_active ) VALUES ( '44444444-4444-4444-4444-444444444444', 'https://example.com/signup', now(), 'user-2', '注册页面', '新用户注册页面', [ '转化', '注册' ], true ); -- 为第一个链接创建500条记录 INSERT INTO limq.link_events ( event_id, event_time, date, link_id, channel_id, visitor_id, session_id, event_type, ip_address, country, city, referrer, utm_source, utm_medium, utm_campaign, user_agent, device_type, browser, os, time_spent_sec, is_bounce, is_qr_scan, qr_code_id, conversion_type, conversion_value, custom_data ) SELECT generateUUIDv4() AS event_id, subtractDays(now(), rand() % 30) AS event_time, toDate(event_time) AS date, '11111111-1111-1111-1111-111111111111' AS link_id, 'channel-1' AS channel_id, concat('visitor-', toString(rand() % 100 + 1)) AS visitor_id, concat('session-', toString(number % 50 + 1)) AS session_id, multiIf( rand() % 100 < 70, 'click', rand() % 100 < 90, 'redirect', rand() % 100 < 98, 'conversion', 'error' ) AS event_type, concat('192.168.1.', toString(rand() % 255)) AS ip_address, multiIf( rand() % 100 < 60, 'China', rand() % 100 < 85, 'US', rand() % 100 < 95, 'Japan', 'Other' ) AS country, multiIf( rand() % 100 < 60, 'Beijing', rand() % 100 < 85, 'New York', rand() % 100 < 95, 'Tokyo', 'Other' ) AS city, multiIf( rand() % 100 < 30, 'https://google.com', rand() % 100 < 50, 'https://facebook.com', rand() % 100 < 65, 'https://twitter.com', rand() % 100 < 75, 'https://instagram.com', rand() % 100 < 85, 'https://linkedin.com', rand() % 100 < 90, 'https://bing.com', rand() % 100 < 95, 'https://baidu.com', 'direct' ) AS referrer, multiIf( rand() % 100 < 40, 'google', rand() % 100 < 70, 'facebook', rand() % 100 < 90, 'email', 'direct' ) AS utm_source, multiIf( rand() % 100 < 40, 'cpc', rand() % 100 < 70, 'social', rand() % 100 < 90, 'email', 'direct' ) AS utm_medium, multiIf( rand() % 100 < 40, 'summer_sale', rand() % 100 < 70, 'product_launch', rand() % 100 < 90, 'newsletter', 'brand' ) AS utm_campaign, 'Mozilla/5.0' AS user_agent, multiIf( rand() % 100 < 60, 'mobile', rand() % 100 < 85, 'desktop', rand() % 100 < 95, 'tablet', 'other' ) AS device_type, multiIf( rand() % 100 < 50, 'Chrome', rand() % 100 < 80, 'Safari', rand() % 100 < 95, 'Firefox', 'Edge' ) AS browser, multiIf( rand() % 100 < 50, 'iOS', rand() % 100 < 90, 'Android', 'Windows' ) AS os, rand() % 300 AS time_spent_sec, rand() % 100 < 25 AS is_bounce, rand() % 100 < 20 AS is_qr_scan, concat('qr-', toString(rand() % 10 + 1)) AS qr_code_id, multiIf( rand() % 100 < 50, 'visit', rand() % 100 < 70, 'stay', rand() % 100 < 85, 'interact', rand() % 100 < 93, 'signup', rand() % 100 < 97, 'subscription', 'purchase' ) AS conversion_type, rand() % 100 * 1.5 AS conversion_value, '{}' AS custom_data FROM numbers(500); -- 为第二个链接创建300条记录 INSERT INTO limq.link_events ( event_id, event_time, date, link_id, channel_id, visitor_id, session_id, event_type, ip_address, country, city, referrer, utm_source, utm_medium, utm_campaign, user_agent, device_type, browser, os, time_spent_sec, is_bounce, is_qr_scan, qr_code_id, conversion_type, conversion_value, custom_data ) SELECT generateUUIDv4() AS event_id, subtractDays(now(), rand() % 30) AS event_time, toDate(event_time) AS date, '22222222-2222-2222-2222-222222222222' AS link_id, 'channel-1' AS channel_id, concat('visitor-', toString(rand() % 100 + 1)) AS visitor_id, concat('session-', toString(number % 40 + 1)) AS session_id, multiIf( rand() % 100 < 70, 'click', rand() % 100 < 90, 'redirect', rand() % 100 < 98, 'conversion', 'error' ) AS event_type, concat('192.168.1.', toString(rand() % 255)) AS ip_address, multiIf( rand() % 100 < 60, 'China', rand() % 100 < 85, 'US', rand() % 100 < 95, 'Japan', 'Other' ) AS country, multiIf( rand() % 100 < 60, 'Beijing', rand() % 100 < 85, 'New York', rand() % 100 < 95, 'Tokyo', 'Other' ) AS city, multiIf( rand() % 100 < 30, 'https://google.com', rand() % 100 < 50, 'https://facebook.com', rand() % 100 < 65, 'https://twitter.com', rand() % 100 < 75, 'https://instagram.com', rand() % 100 < 85, 'https://linkedin.com', rand() % 100 < 90, 'https://bing.com', rand() % 100 < 95, 'https://baidu.com', 'direct' ) AS referrer, multiIf( rand() % 100 < 40, 'google', rand() % 100 < 70, 'facebook', rand() % 100 < 90, 'email', 'direct' ) AS utm_source, multiIf( rand() % 100 < 40, 'cpc', rand() % 100 < 70, 'social', rand() % 100 < 90, 'email', 'direct' ) AS utm_medium, multiIf( rand() % 100 < 40, 'summer_sale', rand() % 100 < 70, 'product_launch', rand() % 100 < 90, 'newsletter', 'brand' ) AS utm_campaign, 'Mozilla/5.0' AS user_agent, multiIf( rand() % 100 < 60, 'mobile', rand() % 100 < 85, 'desktop', rand() % 100 < 95, 'tablet', 'other' ) AS device_type, multiIf( rand() % 100 < 50, 'Chrome', rand() % 100 < 80, 'Safari', rand() % 100 < 95, 'Firefox', 'Edge' ) AS browser, multiIf( rand() % 100 < 50, 'iOS', rand() % 100 < 90, 'Android', 'Windows' ) AS os, rand() % 300 AS time_spent_sec, rand() % 100 < 25 AS is_bounce, rand() % 100 < 15 AS is_qr_scan, concat('qr-', toString(rand() % 10 + 1)) AS qr_code_id, multiIf( rand() % 100 < 50, 'visit', rand() % 100 < 70, 'stay', rand() % 100 < 85, 'interact', rand() % 100 < 93, 'signup', rand() % 100 < 97, 'subscription', 'purchase' ) AS conversion_type, rand() % 100 * 2.5 AS conversion_value, '{}' AS custom_data FROM numbers(300); -- 为第三个链接创建200条记录 INSERT INTO limq.link_events ( event_id, event_time, date, link_id, channel_id, visitor_id, session_id, event_type, ip_address, country, city, referrer, utm_source, utm_medium, utm_campaign, user_agent, device_type, browser, os, time_spent_sec, is_bounce, is_qr_scan, qr_code_id, conversion_type, conversion_value, custom_data ) SELECT generateUUIDv4() AS event_id, subtractDays(now(), rand() % 30) AS event_time, toDate(event_time) AS date, '33333333-3333-3333-3333-333333333333' AS link_id, 'channel-2' AS channel_id, concat('visitor-', toString(rand() % 100 + 1)) AS visitor_id, concat('session-', toString(number % 30 + 1)) AS session_id, multiIf( rand() % 100 < 70, 'click', rand() % 100 < 90, 'redirect', rand() % 100 < 98, 'conversion', 'error' ) AS event_type, concat('192.168.1.', toString(rand() % 255)) AS ip_address, multiIf( rand() % 100 < 60, 'China', rand() % 100 < 85, 'US', rand() % 100 < 95, 'Japan', 'Other' ) AS country, multiIf( rand() % 100 < 60, 'Beijing', rand() % 100 < 85, 'New York', rand() % 100 < 95, 'Tokyo', 'Other' ) AS city, multiIf( rand() % 100 < 30, 'https://google.com', rand() % 100 < 50, 'https://facebook.com', rand() % 100 < 65, 'https://twitter.com', rand() % 100 < 75, 'https://instagram.com', rand() % 100 < 85, 'https://linkedin.com', rand() % 100 < 90, 'https://bing.com', rand() % 100 < 95, 'https://baidu.com', 'direct' ) AS referrer, multiIf( rand() % 100 < 40, 'google', rand() % 100 < 70, 'facebook', rand() % 100 < 90, 'email', 'direct' ) AS utm_source, multiIf( rand() % 100 < 40, 'cpc', rand() % 100 < 70, 'social', rand() % 100 < 90, 'email', 'direct' ) AS utm_medium, multiIf( rand() % 100 < 40, 'summer_sale', rand() % 100 < 70, 'product_launch', rand() % 100 < 90, 'newsletter', 'brand' ) AS utm_campaign, 'Mozilla/5.0' AS user_agent, multiIf( rand() % 100 < 60, 'mobile', rand() % 100 < 85, 'desktop', rand() % 100 < 95, 'tablet', 'other' ) AS device_type, multiIf( rand() % 100 < 50, 'Chrome', rand() % 100 < 80, 'Safari', rand() % 100 < 95, 'Firefox', 'Edge' ) AS browser, multiIf( rand() % 100 < 50, 'iOS', rand() % 100 < 90, 'Android', 'Windows' ) AS os, rand() % 600 AS time_spent_sec, rand() % 100 < 15 AS is_bounce, rand() % 100 < 10 AS is_qr_scan, concat('qr-', toString(rand() % 10 + 1)) AS qr_code_id, multiIf( rand() % 100 < 50, 'visit', rand() % 100 < 70, 'stay', rand() % 100 < 85, 'interact', rand() % 100 < 93, 'signup', rand() % 100 < 97, 'subscription', 'purchase' ) AS conversion_type, rand() % 100 * 1.2 AS conversion_value, '{}' AS custom_data FROM numbers(200); -- 为第四个链接创建400条记录 INSERT INTO limq.link_events ( event_id, event_time, date, link_id, channel_id, visitor_id, session_id, event_type, ip_address, country, city, referrer, utm_source, utm_medium, utm_campaign, user_agent, device_type, browser, os, time_spent_sec, is_bounce, is_qr_scan, qr_code_id, conversion_type, conversion_value, custom_data ) SELECT generateUUIDv4() AS event_id, subtractDays(now(), rand() % 30) AS event_time, toDate(event_time) AS date, '44444444-4444-4444-4444-444444444444' AS link_id, 'channel-2' AS channel_id, concat('visitor-', toString(rand() % 100 + 1)) AS visitor_id, concat('session-', toString(number % 60 + 1)) AS session_id, multiIf( rand() % 100 < 70, 'click', rand() % 100 < 90, 'redirect', rand() % 100 < 98, 'conversion', 'error' ) AS event_type, concat('192.168.1.', toString(rand() % 255)) AS ip_address, multiIf( rand() % 100 < 60, 'China', rand() % 100 < 85, 'US', rand() % 100 < 95, 'Japan', 'Other' ) AS country, multiIf( rand() % 100 < 60, 'Beijing', rand() % 100 < 85, 'New York', rand() % 100 < 95, 'Tokyo', 'Other' ) AS city, multiIf( rand() % 100 < 30, 'https://google.com', rand() % 100 < 50, 'https://facebook.com', rand() % 100 < 65, 'https://twitter.com', rand() % 100 < 75, 'https://instagram.com', rand() % 100 < 85, 'https://linkedin.com', rand() % 100 < 90, 'https://bing.com', rand() % 100 < 95, 'https://baidu.com', 'direct' ) AS referrer, multiIf( rand() % 100 < 40, 'google', rand() % 100 < 70, 'facebook', rand() % 100 < 90, 'email', 'direct' ) AS utm_source, multiIf( rand() % 100 < 40, 'cpc', rand() % 100 < 70, 'social', rand() % 100 < 90, 'email', 'direct' ) AS utm_medium, multiIf( rand() % 100 < 40, 'summer_sale', rand() % 100 < 70, 'product_launch', rand() % 100 < 90, 'newsletter', 'brand' ) AS utm_campaign, 'Mozilla/5.0' AS user_agent, multiIf( rand() % 100 < 60, 'mobile', rand() % 100 < 85, 'desktop', rand() % 100 < 95, 'tablet', 'other' ) AS device_type, multiIf( rand() % 100 < 50, 'Chrome', rand() % 100 < 80, 'Safari', rand() % 100 < 95, 'Firefox', 'Edge' ) AS browser, multiIf( rand() % 100 < 50, 'iOS', rand() % 100 < 90, 'Android', 'Windows' ) AS os, rand() % 400 AS time_spent_sec, rand() % 100 < 20 AS is_bounce, rand() % 100 < 25 AS is_qr_scan, concat('qr-', toString(rand() % 10 + 1)) AS qr_code_id, multiIf( rand() % 100 < 50, 'visit', rand() % 100 < 70, 'stay', rand() % 100 < 85, 'interact', rand() % 100 < 93, 'signup', rand() % 100 < 97, 'subscription', 'purchase' ) AS conversion_type, rand() % 100 * 3.5 AS conversion_value, '{}' AS custom_data FROM numbers(400); -- 插入link_daily_stats表数据 INSERT INTO limq.link_daily_stats ( date, link_id, total_clicks, unique_visitors, unique_sessions, total_time_spent, avg_time_spent, bounce_count, conversion_count, unique_referrers, mobile_count, tablet_count, desktop_count, qr_scan_count, total_conversion_value ) SELECT subtractDays(today(), number) AS date, multiIf( number % 4 = 0, '11111111-1111-1111-1111-111111111111', number % 4 = 1, '22222222-2222-2222-2222-222222222222', number % 4 = 2, '33333333-3333-3333-3333-333333333333', '44444444-4444-4444-4444-444444444444' ) AS link_id, 50 + rand() % 100 AS total_clicks, 30 + rand() % 50 AS unique_visitors, 20 + rand() % 40 AS unique_sessions, (500 + rand() % 1000) * 60 AS total_time_spent, (rand() % 10) * 60 + rand() % 60 AS avg_time_spent, 5 + rand() % 20 AS bounce_count, rand() % 30 AS conversion_count, 3 + rand() % 8 AS unique_referrers, 20 + rand() % 40 AS mobile_count, 5 + rand() % 15 AS tablet_count, 15 + rand() % 30 AS desktop_count, rand() % 10 AS qr_scan_count, rand() % 1000 * 2.5 AS total_conversion_value FROM numbers(30) WHERE number < 30; -- 插入link_hourly_patterns表数据 INSERT INTO limq.link_hourly_patterns (date, hour, link_id, visits, unique_visitors) SELECT subtractDays(today(), number % 7) AS date, number % 24 AS hour, multiIf( intDiv(number, 24) % 4 = 0, '11111111-1111-1111-1111-111111111111', intDiv(number, 24) % 4 = 1, '22222222-2222-2222-2222-222222222222', intDiv(number, 24) % 4 = 2, '33333333-3333-3333-3333-333333333333', '44444444-4444-4444-4444-444444444444' ) AS link_id, 5 + rand() % 20 AS visits, 3 + rand() % 10 AS unique_visitors FROM numbers(672) -- 7天 x 24小时 x 4个链接 WHERE number < 672; -- 显示数据行数,验证插入成功 SELECT 'link_events 表行数:' AS metric, count() AS value FROM limq.link_events UNION ALL SELECT 'link_daily_stats 表行数:', count() FROM limq.link_daily_stats UNION ALL SELECT 'link_hourly_patterns 表行数:', count() FROM limq.link_hourly_patterns;