Query
SELECT
fact.campaign_id campaign_id,
fact.target_id target_id,
fact.ams_profile_id ams_profile_id,
fact.ad_group_name ad_group_name,
fact.ad_group_id ad_group_id,
fact.targeting_text targeting_text,
dim.startDate AS campaign_start_date,
fact.campaign_name campaign_name,
fact.query query,
fact.targeting_type targeting_type,
fact.ad_type ad_type,
fact.country country,
SUM(attributed_sales1d) AS sales1d,
SUM(attributed_sales7d) AS sales7d,
SUM(attributed_sales14d) AS sales14d,
SUM(attributed_sales30d) AS sales30d,
SUM(attributed_sales14d_same_sku) AS sales14d_same_sku,
SUM(attributed_sales14d) - SUM(attributed_sales14d_same_sku) AS halo_sales14d,
SUM(attributed_sales_new_to_brand14d) AS sales14d_new_to_brand,
term.salesLast60d AS sales_last60d,
term.salesThisWeek AS sales_this_week,
term.salesMTD AS sales_mtd,
term.roasLast60d AS roas_last60d,
term.roasThisWeek AS roas_this_week,
term.roasMTD AS roas_mtd,
CASE term.search_frequency_rank
WHEN 99999999 THEN NULL
ELSE term.search_frequency_rank
END search_frequency_rank,
SUM(cost) AS adspend,
ROUND((SUM(cost) / SUM(attributed_sales14d)) * 100,
2) AS acos14d,
ROUND(SUM(attributed_sales14d) / SUM(cost), 2) AS roas14d,
ROUND((SUM(attributed_conversions14d) / SUM(clicks)) * 100,
2) AS conversion14d,
SUM(attributed_conversions14d) AS conversions14d,
SUM(attributed_conversions14d_same_sku) AS conversions14d_same_sku,
ROUND((SUM(clicks) / SUM(impressions)) * 100,
2) AS ctr,
SUM(impressions) AS impressions,
SUM(clicks) AS clicks,
SUM(attributed_units_ordered14d) AS orders14d,
ROUND((SUM(cost) / SUM(clicks)), 2) AS cpc,
ROUND(SUM(cost) / SUM(impressions), 2) AS cpi,
dim.state campaign_status,
CASE keyword.bid
WHEN 0 THEN adGroup.defaultBid
ELSE keyword.bid
END keyword_bid,
fact.brand brand
FROM
fact_targets_segmented_summary_daily AS `fact`
INNER JOIN
dim_search_terms_v1 AS term ON term.user_id = term.user_id
AND term.keyword_id = fact.target_id
AND fact.query = term.search_term
INNER JOIN
dim_keywords_v1 AS keyword ON fact.target_id = keyword.keywordId
AND keyword.userId = fact.user_id
INNER JOIN
dim_campaign_v1 AS dim ON fact.campaign_id = dim.campaignId
AND dim.userId = fact.user_id
INNER JOIN
dim_adgroup_v1 AS adGroup ON keyword.adGroupId = adGroup.adGroupId
AND keyword.userId = adGroup.userId
WHERE
(fact.user_id = {user_id}
AND (fact.report_type = 'keywords')
AND (dim.state = 'enabled')
AND (fact.country = {country})
AND (fact.brand = {brand})
AND fact.date BETWEEN '2022-09-18' AND '2022-10-22')
GROUP BY fact.user_id , fact.ams_profile_id , fact.campaign_id , fact.target_id , fact.query;
Tables
| Name |
Primary Key |
Index |
Records |
| fact_targets_segmented_summary_daily |
(user_id, ams_profile_id, campaign_id, target_id, query) |
`key_index (ams_profile_id,campaign_id,target_id,query), |
|
| report_type_index (report_type), |
|
|
|
| date_index (date), |
|
|
|
| user_id (user_id), |
|
|
|
| campaign_id (campaign_id), |
|
|
|
| targeting_text (targeting_text), |
|
|
|
| query_index (query)` |
12273557 |
|
|
| dim_search_terms_v1 |
(user_id, ams_profile_id, campaign_id, keyword_id, search_term) |
`keyword_id_index (keyword_id), |
|
| search_term_index (search_term), |
|
|
|
| campaign_index (campaign_id), |
|
|
|
| user_index (user_id)` |
4041735 |
|
|
| dim_keywords_v1 |
(userId, amsProfileId, campaignId, keywordId) |
`state_index (keywordId,state), |
|
| user_id (userId), |
|
|
|
| id_index (amsProfileId,keywordId), |
|
|
|
| keyword_text (keywordText)` |
6031633 |
|
|
| dim_campaign_v1 |
(userId, amsProfileId, campaignId) |
`campaign_state (campaignId,state), |
|
| user_id (userId), |
|
|
|
| id_index (amsProfileId,campaignId), |
|
|
|
| campaign_id_index (campaignId), |
|
|
|
| filter_index (userId,amsProfileId,campaignId)` |
188591 |
|
|
| dim_adgroup_v1 |
(userId, amsProfileId, campaignId, adGroupId) |
ad_group_index (adGroupId) |
485912 |
Explain plan
| ID |
select_type |
table |
partitions |
type |
possible_keys |
key |
key_len |
ref |
rows |
filtered |
Extra |
| 1 |
SIMPLE |
dim |
|
ref |
PRIMARY,campaign_state,user_id,campaign_id_index,filter_index |
user_id |
4 |
const |
3601 |
10.00 |
Using where; Using temporary; Using filesort |
| 1 |
SIMPLE |
fact |
|
ref |
PRIMARY,key_index,report_type_index,date_index,user_id,campaign_id,targeting_text,query_index |
campaign_id |
16 |
demandhelm.dim.campaignId,const |
118 |
0.04 |
Using index condition; Using where |
| 1 |
SIMPLE |
keyword |
|
ref |
PRIMARY,state_index,user_id |
user_id |
12 |
const,demandhelm.fact.target_id |
1 |
100.00 |
|
| 1 |
SIMPLE |
adGroup |
|
ref |
ad_group_index |
ad_group_index |
8 |
demandhelm.keyword.adGroupId |
1 |
10.00 |
Using index condition |
| 1 |
SIMPLE |
term |
|
ref |
keyword_id_index |
keyword_id_index |
8 |
demandhelm.fact.target_id |
13 |
100.00 |
Using index condition |