修复: 明细维度聚合跳过空值/0, 避免同adping多文档时误取空campaign_id/account

This commit is contained in:
2026-09-11 11:26:22 +08:00
parent 41f5e3016c
commit a71486a847
2 changed files with 13 additions and 6 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+12 -5
View File
@@ -131,15 +131,22 @@ PAYIN_SRC="try{return Double.parseDouble(doc['advertiser_payin.keyword'].value)}
PRICE_SRC="try{return Double.parseDouble(doc['deliver_price.keyword'].value)}catch(Exception e){return 0.0}" PRICE_SRC="try{return Double.parseDouble(doc['deliver_price.keyword'].value)}catch(Exception e){return 0.0}"
def dims_aggs(): def dims_aggs():
# size 调大,避免同一 adping_id 下混有空值时取到空;取值时在 first() 里跳过空
return { return {
'rc':{'terms':{'field':'routing_campaign_id.keyword','size':1}}, 'rc':{'terms':{'field':'routing_campaign_id.keyword','size':10}},
'cid':{'terms':{'field':'campaign_id.keyword','size':1}}, 'cid':{'terms':{'field':'campaign_id.keyword','size':10}},
'sc':{'terms':{'field':'second_channel.keyword','size':1}}, 'sc':{'terms':{'field':'second_channel.keyword','size':10}},
'acc':{'terms':{'field':'advertiser_account_id','size':1}}, 'acc':{'terms':{'field':'advertiser_account_id','size':10}},
'pkg':{'terms':{'field':'pkg_name.keyword','size':1}}, 'pkg':{'terms':{'field':'pkg_name.keyword','size':10}},
} }
def first(agg_obj): def first(agg_obj):
# 返回第一个"有意义"的值:跳过空串、0、'0'(这些是缺失/占位)
b=agg_obj.get('buckets',[]) b=agg_obj.get('buckets',[])
for x in b:
k=x.get('key')
if k not in ('',None,0,'0'):
return k
# 全是空值时,退回第一个原始值(保持原样,不强造)
return b[0]['key'] if b else '' return b[0]['key'] if b else ''
# click表: 按 adping_id -> clicks(计数) + 维度(优先来源) # click表: 按 adping_id -> clicks(计数) + 维度(优先来源)