
    2iU(                       d dl mZ d dlmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZ d dl
mZmZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZmZ d d	lmZmZ d d
l m!Z! dZ"dZ# eddd      Z$ eddd      Z%drdZ&dsdZ'dtdZ(dudZ)e!jT                  jW                  e"      Z,ejT                  jW                  e#      Z- ee$e%      \  Z.Z/e.ja                          de/ja                          Z1 e&d        ejd                  ejf                        Z4 e5dejl                          e5dde4v        e4jo                         D ]  Z8de8v s e5de8js                                   e&d        e5de,jt                  e,jv                  de,jx                          e5d e-jt                  e-jz                          e5d!e-j|                          e5d"e-j~                  e-j                  e-j                          e5d#e-j                          e5d$e-j                          e5d%e-j                          e5d&e1        e5d' ee-              e&d(        e5d)ejT                  j                  e-*      j                                 e5d+ejT                  j                  e-*      j                                 e5d, eG eejT                  j                  e-*      j                  d-d./                          e5d0ejT                  j                  e-*      j                                 e5d1ejT                  j                  e-*      j                                 e&d2        ejf                  e,e$ja                         e%ja                               ZI ejf                  e,e.ja                         e/ja                               ZJ e5d3 e'eI              e5d4 e'eJ              e&d5        e)e,e.ja                         e/ja                         d67      \  ZKZL e)e,e.ja                         e/ja                         d.7      \  ZMZN ejf                  e,e.ja                         e/ja                               ZO e5d8 e'eK              e5d9 e	eL      d:eL        e5d; e'eM              e5d< e	eN      d:eN        e5d= e'eO              e5d> ePeO       ePeM      k(          e5d? ePeO       ePeK      k7          e&d@        ee-eI ee-      A      ZQ ee-eJ ee-      A      ZR e5dB e'eQ              e5dC e'eR              eeI      ZS ee-eIeSD      ZT ee-eIe$e%e,eSD      \  ZUZVZW e5dE e'eT              e5dFeVeW e'eU              e&dG       ejT                  j                  e,eJH      j                  dIdJ      ZX e5 eG eeX                    e5dK eYeX              e5dL eY ePeJ      ejT                  j                  e,eJH      j                  dM      D  ch c]  } | d    	 c} z
                e&dN        ePejT                  j                  e-eRO      j                  dMd./      j                               Z[eRD cg c]	  }|e[vs| c}Z\ e]ejT                  j                  e-eRdPQ      j                  dMd./      j                               Z^ e] ePe\e^z               Z_e_rye,j                  sm ePejT                  j                  e_d6R      j                  dMd./      j                               Zae_D cg c]	  }|eavs| c}Zbe_D cg c]	  }|eav s| c}Zcn ePe_      Zag Zbe_Zc e5dS e'e[              e5dT e'e\              e5dU e'e^              e5dV e'e_              e5dW e'eb              e5dX e'ec             eJs	 e5dY       neRs	 e5dZ       necs	 e5d[       n e5d\        e&d]        e]ejT                  j                  e,eQd6^      j                  d_d./      j                               Zd e5d` e'edD cg c]
  } ee|       c}             ejT                  j                  eda      j                  dbdcd-dd      Zf ede efD              Zg ehegj                               D ]  \  ZjZF e5eFej         e&df        e5dg e]ejT                  j                  e-*      j                  dhdidjdkdldmdd                    e5dn e]ejT                  j                  e-*      j                  dhd-dldddodpdq                   yc c} w c c}w c c}w c c}w c c}w )v    )annotations)Counter)dateN)execute_queryis_cache_hit)_PLATFORM_MAP_build_account_filter_platform_tables)AdCreativeDataAdLabelConfigAdLabelGroupAdLabelTask	AdLabelV2CreativeOverviewLabelConfigQueue)_get_queue_scope_get_scoped_idscalculate_effective_date_rangeprecompute_creative_scopeprecompute_label_check_data)_get_ad_ids_for_date_range_is_metadata_only)Accountz$4a394592-e225-4b6d-850a-d68db3902bd3z$f39d7c80-abb5-4e8a-b378-77ff69b70869i           c                "    t        d|  d       y )Nz
=== z ===)print)titles    %/tmp/debug_label_demand_completion.pypr!   (   s    	F5'
    c                p    t        | xs g       } t        |       |kD  rdnd}| d |  | dt        |        dS )Nz ... z (count=))listlen)valuesnsuffixs      r    sampler+   ,   sB    &,BF6{QVBFRaj\&#f+a88r"   c                
   | j                         }t        | |xs d       }t        | j                        ||d}g }|j	                         D ]  \  }}t        j                  |      }	|	|	 d}
|D cg c]  }t        |j                         }}|j                          d}t        t        | j                        |r|ng |d|      }|j                  d|
 d| d        d	j                  |      }d
| d}||fS c c}w )N)p_account_idp_startp_end_daily_metric_m)table_aliasprefixz.    SELECT DISTINCT m.ad_id AS ad_id
    FROM z AS m
    WHERE zQ
      AND m.date BETWEEN {p_start:Date} AND {p_end:Date}
      AND m.ad_id != ''z
    UNION ALL
z
SELECT DISTINCT ad_id FROM (
z
)
)get_child_accountsr
   striditemsr   getlowerr	   appendjoin)account
start_dateend_datechild_accountsplatform_groupsparams
union_legsplat_keychildrenmappedtablec	child_idsr4   acct_filter	inner_sqlsqls                    r    build_active_ad_ids_queryrM   2   s8   //1N&w0F$GOGJJF J-335(""8,>(-((011SY	1NN$%Q'+

O'IR
 	w $ &&'	
 6, $((4I
 C
 ;/ 2s   3D c                   t        | ||      \  }}t        |||      \  }}|D cg c]"  }|j                  d      st        |d         $ c}|fS c c}w )N
skip_cachead_id)rM   r   r9   r6   )	r=   r>   r?   rP   rL   rB   rows
elapsed_msrows	            r    run_active_ad_queryrU   [   sX    +GZJKC$S&ZHD*)-B#1ACGBJNNBs
   AA)r7   z..zLoaded Codezdirect_queries file:zhelper has skip_cache=True:zskip_cache=Truer   zhelper execute_query line:Configzaccount:zversion=zlabel_config:zcreative_type:zsync:ztask_id:zlabel_sources:zstage_timings:zeffective_range:zmetadata_only:zExisting Work Rowszgroups:)label_configzlabel_v2 total:zlabel_v2 by status:sync_statusT)flatzqueue rows:zlabel tasks:zClickHouse Active Adszdisplay_active_ids:zeffective_active_ids:z&Cache Bypass Proof For Effective RangeFrO   zcached effective ids:zcached was cache hit:zelapsed_ms=zfresh effective ids:zfresh was cache hit:zhelper effective ids:zhelper matches fresh:zhelper differs from cached:zCurrent-Code Scoping)include_ads_without_creativez#_get_ad_ids_for_date_range display:z%_get_ad_ids_for_date_range effective:)_creative_cachez_get_scoped_ids display fast:z_get_queue_scope fast:z6AdCreativeData Type Cross-Tab For Effective Active Ads)r=   	ad_id__increative_typecreative__typez)adcreative rows for effective active ids:z'active ids missing from AdCreativeData:rQ   z$Demand Missing-Ad Decision Emulation)rW   r\   failed)rW   r\   rX   )r\   ch_pushed_at__isnullzalready_processed:znever_processed:zfailed_ad_ids:zmissing_before_ch_ready:zpending_ch:zmissing_after_ch_ready:zwould_return: no_adszwould_return: no_matching_adszwould_return: all_labeledzwould_return: foundz%Overview State For Display-Scoped Ads)r=   r\   creative_id__isnullcreative_idzdisplay creative ids:)creative_id__inoverview_prompt__titleoverview_prompt__creative_typeerror_messagec              #  @   K   | ]  \  }}}}||||xs d dd f  yw)r$   NP    ).0r   prompt_typestatuserrs        r    	<genexpr>rn     s>       ,;'{FC 		CR	 ,;s   zRelevant Rowszqueue:r7   rl   effective_start_dateeffective_end_datead_idsworkflow_idztasks:
created_at
started_atcompleted_at)r   r6   )
   )r>   r6   r?   r6   )r>   r6   r?   r6   rP   bool)l
__future__r   collectionsr   datetimer   inspect clickhouse_read_module.ch_clientr   r   %clickhouse_read_module.direct_queriesdirect_queriesr   r	   r
   creative_module.modelsr   r   r   r   r   r   r   %creative_module.services.data_servicer   r   r   r   r   #creative_module.tasks.label_v2_taskr   r   organization_auth.modelsr   
ACCOUNT_IDLABEL_CONFIG_ID
START_DATEEND_DATEr!   r+   rM   rU   objectsr9   r=   rW   	eff_starteff_end	isoformateff_key	getsource"fetch_active_ad_ids_for_date_rangehelper_sourcer   __file__
splitlineslinestripr7   ad_account_nameversionr   r]   rX   sync_progressrf   task_idlabel_sourcesstage_timingsfiltercountdictvalues_listdisplay_active_idseffective_active_idscached_effective_idscached_elapsedfresh_effective_idsfresh_elapsedhelper_effective_idssetdisplay_scoped_no_cacheeffective_scoped_no_cachecreative_cachedisplay_scoped_fastqueue_scoped_fastqueue_eff_startqueue_eff_end	type_rowsr'   distinctalready_processednever_processedr&   failed_ad_idsmissingis_democh_ready
pending_chmissing_after_ch_readydisplay_creative_idsr6   overview_countssummarysortedr8   keyr(   )rT   aidcids   000r    <module>r      s	   "    H > 
    ^ , 4
8$2
a 9&RO //



,$$((O(<3JI 	7  "#2g&7&7&9%:
; - !!!."S"ST n55 6 #%6-%G H$$&D$*DJJL9 ' ( j'**g55z7?? S o|(:(: ; 22 3 g|'')C)C\E_E_ ` j,&& ' 22 3 22 3 ' " ),7 8   i%%,,,,GMMO P **11|1LRRT U ""))|)DPPQ^eiPj	kl m%--44,4OUUW X nk))00l0KQQS T  F^FF 
 I~HH 
 V$67 8 v&:; < * +':	( $ n &9	& " ] I~HH 
 v&:; < |N;]N [ f%89 : l=9=- X v&:; < s#78C@S<TT U #S)=%>#FZB[%[ \  4!2<!@ 
 7!2<!@ 
 +V4K-L M -v6O/P Q*+=>%l4FXfg 4D"5 1 ?M %v.A'B C GX@Y Z : ;VG';V<["23 

 d79  13y> B /S9M5Ndrdzdz  eB  eB  KR  ^r  eB  es  e  e  @G  eH  RI  eH]`RUVWRX  eH  RI  6I  2J  K ( )V1JVK[t[$XZ	  #<\";3sJ[?[3";\V1JX`Va[t[$XZ	 s?]23
4
7??	'	>	W4	(		H ")@#Cx,?#@J-4HWcxcWH7|HJ$ F#45 6 &1 2 }- .  &/ 2 mVJ' ( (>!? @	
 !	"	
)*		
%&	
  ) *VG'>TYVZ[T[*XZ	  v;O&P;OCs3x;O&PQ RV0V1[)+K]\kl 
   ,;  )JC	% * /    	\	*	h 68LhXegv	w 	\	*	mXl\j	k_ RI ] AH6 'Qs0   :d'!	d,+d,	d1$d1/	d69d6$d;