|  | @@ -159,10 +159,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |          ] #'startDate', 'endDate',
 | 
	
		
			
				|  |  |          params['groupby'] = ['purchasedAsin']
 | 
	
		
			
				|  |  |          params['timeUnit'] = 'DAILY'
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v3_report(timeUnit=params['timeUnit'],groupby=params['groupby'],columns=params['columns'],startDate=params['startDate'],endDate=params['endDate'],reportType=params['reportType'])
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v3_report(timeUnit=params['timeUnit'],groupby=params['groupby'],columns=params['columns'],startDate=params['startDate'],endDate=params['endDate'],reportType=params['reportType'])
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def reportV2_campaignsRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
	
		
			
				|  | @@ -179,10 +179,11 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                  'campaignBudgetType', 'campaignId', 'campaignName', 'campaignRuleBasedBudget', 'campaignStatus', 'clicks', 'cost',
 | 
	
		
			
				|  |  |                  'dpv14d', 'impressions', 'unitsSold14d', 'attributedBrandedSearches14d', 'topOfSearchImpressionShare'
 | 
	
		
			
				|  |  |              ]
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def reportV2_placementRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
		
			
				|  |  |          if params.get("date")==None:
 | 
	
	
		
			
				|  | @@ -201,10 +202,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                      'clicks', 'cost', 'dpv14d', 'impressions', 'unitsSold14d', 'attributedBrandedSearches14d'
 | 
	
		
			
				|  |  |                  ] #'placement'
 | 
	
		
			
				|  |  |          # print(date)
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],segment='placement')
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],segment='placement')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def reportV2_adGroupsRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
	
		
			
				|  | @@ -220,10 +221,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                  'clicks', 'cost', 'dpv14d', 'impressions', 'unitsSold14d', 'attributedBrandedSearches14d'
 | 
	
		
			
				|  |  |                  ] #
 | 
	
		
			
				|  |  |          # print(date)
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def reportV2_targetsRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
	
		
			
				|  | @@ -239,10 +240,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                  'attributedBrandedSearches14d', 'topOfSearchImpressionShare'
 | 
	
		
			
				|  |  |                  ] #
 | 
	
		
			
				|  |  |          # print(date)
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def reportV2_keywordsRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
	
		
			
				|  | @@ -259,10 +260,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                  'unitsSold14d', 'attributedBrandedSearches14d', 'topOfSearchImpressionShare'
 | 
	
		
			
				|  |  |                  ] #
 | 
	
		
			
				|  |  |          # print(date)
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  |          # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def reportV2_searchtermsRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
	
		
			
				|  | @@ -277,10 +278,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                  'searchTermImpressionShare'
 | 
	
		
			
				|  |  |                  ] #
 | 
	
		
			
				|  |  |          # print(date)
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],segment='query')
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],segment='query')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def reportV2_adsRecord_ETL(self,**params):
 | 
	
		
			
				|  |  |          today = datetime.today()
 | 
	
	
		
			
				|  | @@ -296,10 +297,10 @@ class SB_ETL(SBClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |                  'clicks', 'cost', 'dpv14d', 'impressions', 'unitsSold14d', 'vctr', 'attributedBrandedSearches14d'
 | 
	
		
			
				|  |  |                  ] #
 | 
	
		
			
				|  |  |          # print(date)
 | 
	
		
			
				|  |  | -        list_campaigns_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | -        # print(list_campaigns_report)
 | 
	
		
			
				|  |  | -        df_campaign_report = pd.json_normalize(list_campaigns_report)
 | 
	
		
			
				|  |  | -        return df_campaign_report
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'])
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class SD_ETL(SDClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |      def campaigns_ETL(self):
 | 
	
	
		
			
				|  | @@ -333,6 +334,332 @@ class SD_ETL(SDClient,Common_ETLMethod):
 | 
	
		
			
				|  |  |          df_budget = self.TZ_Deal(df_budget,["usageUpdatedTimestamp"])
 | 
	
		
			
				|  |  |          return self.columnsName_modify(df_budget)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    campaigns_metrics = [
 | 
	
		
			
				|  |  | +                'attributedConversions14d', 'attributedConversions14dSameSKU', 'attributedConversions1d', 'attributedConversions1dSameSKU', 'attributedConversions30d',
 | 
	
		
			
				|  |  | +                'attributedConversions30dSameSKU', 'attributedConversions7d', 'attributedConversions7dSameSKU', 'attributedDetailPageView14d', 'attributedOrdersNewToBrand14d',
 | 
	
		
			
				|  |  | +                'attributedSales14d', 'attributedSales14dSameSKU', 'attributedSales1d', 'attributedSales1dSameSKU', 'attributedSales30d', 'attributedSales30dSameSKU',
 | 
	
		
			
				|  |  | +                'attributedSales7d', 'attributedSales7dSameSKU', 'attributedSalesNewToBrand14d', 'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d', 'attributedUnitsOrdered30d',
 | 
	
		
			
				|  |  | +                'attributedUnitsOrdered7d', 'attributedUnitsOrderedNewToBrand14d', 'campaignBudget', 'campaignId', 'campaignName', 'campaignStatus', 'clicks', 'cost', 'costType',
 | 
	
		
			
				|  |  | +                'currency', 'impressions', 'viewAttributedConversions14d', 'viewAttributedDetailPageView14d', 'viewAttributedSales14d', 'viewAttributedUnitsOrdered14d',
 | 
	
		
			
				|  |  | +                'viewImpressions', 'viewAttributedOrdersNewToBrand14d', 'viewAttributedSalesNewToBrand14d', 'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +                'viewAttributedBrandedSearches14d', 'videoCompleteViews', 'videoFirstQuartileViews', 'videoMidpointViews', 'videoThirdQuartileViews', 'videoUnmutes', 'vtr', 'vctr',
 | 
	
		
			
				|  |  | +                'avgImpressionsFrequency', 'cumulativeReach'
 | 
	
		
			
				|  |  | +            ]
 | 
	
		
			
				|  |  | +    def reportV2_campaignsRecord_t2_ETL(self,**params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date")==None:
 | 
	
		
			
				|  |  | +            params["date"] = (datetime(today.year,today.month,today.day,tzinfo=timezone.utc)-timedelta(days=1)).strftime("%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type']='campaigns'
 | 
	
		
			
				|  |  | +        if params.get('metrics')==None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.campaigns_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],tactic="T00020")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_campaignsRecord_t3_ETL(self,**params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date")==None:
 | 
	
		
			
				|  |  | +            params["date"] = (datetime(today.year,today.month,today.day,tzinfo=timezone.utc)-timedelta(days=1)).strftime("%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type']='campaigns'
 | 
	
		
			
				|  |  | +        if params.get('metrics')==None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.campaigns_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],tactic="T00030")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    adGroups_metrics = [
 | 
	
		
			
				|  |  | +        'adGroupId', 'adGroupName', 'attributedConversions14d', 'attributedConversions14dSameSKU', 'attributedConversions1d', 'attributedConversions1dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions30d', 'attributedConversions30dSameSKU', 'attributedConversions7d', 'attributedConversions7dSameSKU', 'attributedDetailPageView14d',
 | 
	
		
			
				|  |  | +        'attributedOrdersNewToBrand14d', 'attributedSales14d', 'attributedSales14dSameSKU', 'attributedSales1d', 'attributedSales1dSameSKU', 'attributedSales30d',
 | 
	
		
			
				|  |  | +        'attributedSales30dSameSKU', 'attributedSales7d', 'attributedSales7dSameSKU', 'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d', 'attributedUnitsOrdered30d',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered7d', 'attributedUnitsOrderedNewToBrand14d', 'bidOptimization', 'campaignId', 'campaignName', 'clicks', 'cost', 'currency', 'impressions',
 | 
	
		
			
				|  |  | +        'viewAttributedConversions14d', 'viewAttributedDetailPageView14d', 'viewAttributedSales14d', 'viewAttributedUnitsOrdered14d', 'viewImpressions',
 | 
	
		
			
				|  |  | +        'viewAttributedOrdersNewToBrand14d', 'viewAttributedSalesNewToBrand14d', 'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +        'viewAttributedBrandedSearches14d', 'videoCompleteViews', 'videoFirstQuartileViews', 'videoMidpointViews', 'videoThirdQuartileViews', 'videoUnmutes', 'vtr',
 | 
	
		
			
				|  |  | +        'vctr', 'avgImpressionsFrequency', 'cumulativeReach']
 | 
	
		
			
				|  |  | +    def reportV2_adGroupsRecord_t2_ETL(self,**params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date")==None:
 | 
	
		
			
				|  |  | +            params["date"] = (datetime(today.year,today.month,today.day,tzinfo=timezone.utc)-timedelta(days=1)).strftime("%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type']='adGroups'
 | 
	
		
			
				|  |  | +        if params.get('metrics')==None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.adGroups_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],tactic="T00020")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_adGroupsRecord_t3_ETL(self,**params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date")==None:
 | 
	
		
			
				|  |  | +            params["date"] = (datetime(today.year,today.month,today.day,tzinfo=timezone.utc)-timedelta(days=1)).strftime("%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type']='adGroups'
 | 
	
		
			
				|  |  | +        if params.get('metrics')==None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.adGroups_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],tactic="T00030")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    productAds_metrics = [
 | 
	
		
			
				|  |  | +        'adGroupId', 'adGroupName', 'adId', 'asin', 'attributedConversions14d', 'attributedConversions14dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions1d', 'attributedConversions1dSameSKU', 'attributedConversions30d',
 | 
	
		
			
				|  |  | +        'attributedConversions30dSameSKU', 'attributedConversions7d', 'attributedConversions7dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedDetailPageView14d', 'attributedOrdersNewToBrand14d', 'attributedSales14d', 'attributedSales14dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedSales1d', 'attributedSales1dSameSKU', 'attributedSales30d', 'attributedSales30dSameSKU', 'attributedSales7d',
 | 
	
		
			
				|  |  | +        'attributedSales7dSameSKU', 'attributedSalesNewToBrand14d', 'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered30d', 'attributedUnitsOrdered7d', 'attributedUnitsOrderedNewToBrand14d', 'campaignId',
 | 
	
		
			
				|  |  | +        'campaignName', 'clicks', 'cost', 'currency', 'impressions', 'sku', 'viewAttributedConversions14d', 'viewImpressions',
 | 
	
		
			
				|  |  | +        'viewAttributedDetailPageView14d', 'viewAttributedSales14d', 'viewAttributedUnitsOrdered14d', 'viewAttributedOrdersNewToBrand14d',
 | 
	
		
			
				|  |  | +        'viewAttributedSalesNewToBrand14d', 'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d', 'viewAttributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +       'videoCompleteViews', 'videoFirstQuartileViews', 'videoMidpointViews', 'videoThirdQuartileViews', 'videoUnmutes', 'vtr', 'vctr',
 | 
	
		
			
				|  |  | +        'avgImpressionsFrequency', 'cumulativeReach'
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_productAds_t2_ETL(self,**params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date")==None:
 | 
	
		
			
				|  |  | +            params["date"] = (datetime(today.year,today.month,today.day,tzinfo=timezone.utc)-timedelta(days=1)).strftime("%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type']='productAds'
 | 
	
		
			
				|  |  | +        if params.get('metrics')==None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.productAds_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],tactic="T00020")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_productAds_t3_ETL(self,**params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date")==None:
 | 
	
		
			
				|  |  | +            params["date"] = (datetime(today.year,today.month,today.day,tzinfo=timezone.utc)-timedelta(days=1)).strftime("%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type']='productAds'
 | 
	
		
			
				|  |  | +        if params.get('metrics')==None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.productAds_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'],report_date=params["date"],metrics=params['metrics'],tactic="T00030")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    targets_metrics = [
 | 
	
		
			
				|  |  | +        'adGroupId', 'adGroupName', 'attributedConversions14d', 'attributedConversions14dSameSKU', 'attributedConversions1d',
 | 
	
		
			
				|  |  | +        'attributedConversions1dSameSKU', 'attributedConversions30d', 'attributedConversions30dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions7d', 'attributedConversions7dSameSKU', 'attributedDetailPageView14d',
 | 
	
		
			
				|  |  | +        'attributedOrdersNewToBrand14d', 'attributedSales14d', 'attributedSales14dSameSKU', 'attributedSales1d',
 | 
	
		
			
				|  |  | +        'attributedSales1dSameSKU', 'attributedSales30d', 'attributedSales30dSameSKU', 'attributedSales7d',
 | 
	
		
			
				|  |  | +        'attributedSales7dSameSKU', 'attributedSalesNewToBrand14d', 'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered30d', 'attributedUnitsOrdered7d', 'attributedUnitsOrderedNewToBrand14d', 'campaignId',
 | 
	
		
			
				|  |  | +        'campaignName', 'clicks', 'cost', 'currency', 'impressions', 'targetId', 'targetingExpression', 'targetingText', 'targetingType',
 | 
	
		
			
				|  |  | +        'viewImpressions', 'viewAttributedConversions14d', 'viewAttributedDetailPageView14d', 'viewAttributedSales14d',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrdered14d', 'viewAttributedOrdersNewToBrand14d', 'viewAttributedSalesNewToBrand14d',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d', 'viewAttributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +        'videoCompleteViews', 'videoFirstQuartileViews', 'videoMidpointViews', 'videoThirdQuartileViews', 'videoUnmutes', 'vtr',
 | 
	
		
			
				|  |  | +        'vctr'
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_targets_t2_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'targets'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.targets_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00020")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_targets_t3_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'targets'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.targets_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00030")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    asins_metrics = [
 | 
	
		
			
				|  |  | +        'adGroupId', 'adGroupName', 'asin', 'attributedSales14dOtherSKU', 'attributedSales1dOtherSKU', 'attributedSales30dOtherSKU',
 | 
	
		
			
				|  |  | +        'attributedSales7dOtherSKU', 'attributedUnitsOrdered14dOtherSKU', 'attributedUnitsOrdered1dOtherSKU',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered30dOtherSKU', 'attributedUnitsOrdered7dOtherSKU', 'campaignId', 'campaignName', 'currency',
 | 
	
		
			
				|  |  | +        'otherAsin', 'sku', 'viewAttributedUnitsOrdered1dOtherSKU', 'viewAttributedUnitsOrdered7dOtherSKU',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrdered14dOtherSKU', 'viewAttributedUnitsOrdered30dOtherSKU', 'viewAttributedSales1dOtherSKU',
 | 
	
		
			
				|  |  | +        'viewAttributedSales7dOtherSKU', 'viewAttributedSales14dOtherSKU', 'viewAttributedSales30dOtherSKU',
 | 
	
		
			
				|  |  | +        'viewAttributedConversions1dOtherSKU', 'viewAttributedConversions7dOtherSKU', 'viewAttributedConversions14dOtherSKU',
 | 
	
		
			
				|  |  | +        'viewAttributedConversions30dOtherSKU', 'attributedConversions1dOtherSKU', 'attributedConversions7dOtherSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions14dOtherSKU', 'attributedConversions30dOtherSKU'
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +    def reportV2_asins_t2_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'asins'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.asins_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00020")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_asins_t3_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'asins'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.asins_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00030")
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    campaigns_MT_metrics = [
 | 
	
		
			
				|  |  | +        'attributedConversions14d', 'attributedConversions14dSameSKU', 'attributedConversions1d',
 | 
	
		
			
				|  |  | +        'attributedConversions1dSameSKU', 'attributedConversions30d', 'attributedConversions30dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions7d', 'attributedConversions7dSameSKU', 'attributedDetailPageView14d',
 | 
	
		
			
				|  |  | +        'attributedOrdersNewToBrand14d', 'attributedSales14d', 'attributedSales14dSameSKU', 'attributedSales1d',
 | 
	
		
			
				|  |  | +        'attributedSales1dSameSKU', 'attributedSales30d', 'attributedSales30dSameSKU', 'attributedSales7d',
 | 
	
		
			
				|  |  | +        'attributedSales7dSameSKU', 'attributedSalesNewToBrand14d', 'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered30d', 'attributedUnitsOrdered7d', 'attributedUnitsOrderedNewToBrand14d', 'campaignBudget',
 | 
	
		
			
				|  |  | +        'campaignId', 'campaignName', 'campaignStatus', 'clicks', 'cost', 'costType', 'currency', 'impressions',
 | 
	
		
			
				|  |  | +        'viewAttributedConversions14d', 'viewAttributedDetailPageView14d', 'viewAttributedSales14d',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrdered14d', 'viewImpressions', 'viewAttributedOrdersNewToBrand14d',
 | 
	
		
			
				|  |  | +        'viewAttributedSalesNewToBrand14d', 'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +        'viewAttributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +    ] #'matchedTarget'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_campaign_matchedTarget_t2_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'campaigns'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.campaigns_MT_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00020",segment='matchedTarget')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_campaign_matchedTarget_t3_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'campaigns'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.campaigns_MT_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00030",segment='matchedTarget')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    adGroups_MT_metrics = [
 | 
	
		
			
				|  |  | +        'adGroupId', 'adGroupName', 'attributedConversions14d', 'attributedConversions14dSameSKU', 'attributedConversions1d',
 | 
	
		
			
				|  |  | +        'attributedConversions1dSameSKU', 'attributedConversions30d', 'attributedConversions30dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions7d', 'attributedConversions7dSameSKU', 'attributedDetailPageView14d',
 | 
	
		
			
				|  |  | +        'attributedOrdersNewToBrand14d', 'attributedSales14d', 'attributedSales14dSameSKU', 'attributedSales1d',
 | 
	
		
			
				|  |  | +        'attributedSales1dSameSKU', 'attributedSales30d', 'attributedSales30dSameSKU', 'attributedSales7dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d', 'attributedUnitsOrdered30d', 'attributedUnitsOrdered7d',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrderedNewToBrand14d', 'bidOptimization', 'campaignId', 'campaignName', 'clicks', 'cost', 'currency',
 | 
	
		
			
				|  |  | +        'impressions', 'viewAttributedConversions14d', 'viewAttributedDetailPageView14d', 'viewAttributedSales14d',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrdered14d', 'viewImpressions', 'viewAttributedOrdersNewToBrand14d',
 | 
	
		
			
				|  |  | +        'viewAttributedSalesNewToBrand14d', 'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d',
 | 
	
		
			
				|  |  | +        'viewAttributedBrandedSearches14d'
 | 
	
		
			
				|  |  | +    ]#, 'matchedTarget'
 | 
	
		
			
				|  |  | +    def reportV2_adGroups_matchedTarget_t2_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'adGroups'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.adGroups_MT_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00020",segment='matchedTarget')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_adGroups_matchedTarget_t3_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'adGroups'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.adGroups_MT_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00030",segment='matchedTarget')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    targets_MT_metrics=[
 | 
	
		
			
				|  |  | +        'adGroupId', 'adGroupName', 'attributedConversions14d', 'attributedConversions14dSameSKU', 'attributedConversions1d',
 | 
	
		
			
				|  |  | +        'attributedConversions1dSameSKU', 'attributedConversions30d', 'attributedConversions30dSameSKU',
 | 
	
		
			
				|  |  | +        'attributedConversions7d', 'attributedConversions7dSameSKU', 'attributedDetailPageView14d',
 | 
	
		
			
				|  |  | +        'attributedOrdersNewToBrand14d', 'attributedSales14d', 'attributedSales14dSameSKU', 'attributedSales1d',
 | 
	
		
			
				|  |  | +        'attributedSales1dSameSKU', 'attributedSales30d', 'attributedSales30dSameSKU', 'attributedSales7d',
 | 
	
		
			
				|  |  | +        'attributedSales7dSameSKU', 'attributedSalesNewToBrand14d', 'attributedUnitsOrdered14d', 'attributedUnitsOrdered1d',
 | 
	
		
			
				|  |  | +        'attributedUnitsOrdered30d', 'attributedUnitsOrdered7d', 'attributedUnitsOrderedNewToBrand14d', 'campaignId',
 | 
	
		
			
				|  |  | +        'campaignName', 'clicks', 'cost', 'currency', 'impressions', 'targetId', 'targetingExpression', 'targetingText', 'targetingType',
 | 
	
		
			
				|  |  | +        'viewAttributedConversions14d', 'viewAttributedDetailPageView14d', 'viewAttributedSales14d',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrdered14d', 'viewAttributedOrdersNewToBrand14d', 'viewAttributedSalesNewToBrand14d',
 | 
	
		
			
				|  |  | +        'viewAttributedUnitsOrderedNewToBrand14d', 'attributedBrandedSearches14d', 'viewAttributedBrandedSearches14d'
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_targets_matchedTarget_t2_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'targets'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.targets_MT_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00020",segment='matchedTarget')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def reportV2_targets_matchedTarget_t3_ETL(self, **params):
 | 
	
		
			
				|  |  | +        today = datetime.today()
 | 
	
		
			
				|  |  | +        if params.get("date") == None:
 | 
	
		
			
				|  |  | +            params["date"] = (
 | 
	
		
			
				|  |  | +                        datetime(today.year, today.month, today.day, tzinfo=timezone.utc) - timedelta(days=1)).strftime(
 | 
	
		
			
				|  |  | +                "%Y%m%d")
 | 
	
		
			
				|  |  | +        params['record_type'] = 'targets'
 | 
	
		
			
				|  |  | +        if params.get('metrics') == None:
 | 
	
		
			
				|  |  | +            params['metrics'] = self.targets_MT_metrics
 | 
	
		
			
				|  |  | +        list_report = self.get_v2_report(record_type=params['record_type'], report_date=params["date"],
 | 
	
		
			
				|  |  | +                                         metrics=params['metrics'], tactic="T00030",segment='matchedTarget')
 | 
	
		
			
				|  |  | +        # print(list_report)
 | 
	
		
			
				|  |  | +        df_report = pd.json_normalize(list_report)
 | 
	
		
			
				|  |  | +        return df_report
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  if __name__ == '__main__':
 | 
	
	
		
			
				|  | @@ -342,6 +669,6 @@ if __name__ == '__main__':
 | 
	
		
			
				|  |  |          'lwa_client_secret': 'cbf0514186db4df91e04a8905f0a91b605eae4201254ced879d8bb90df4b474d',
 | 
	
		
			
				|  |  |          'profile_id': "3006125408623189"
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    ac_etl = SB_ETL(**AWS_CREDENTIALS)
 | 
	
		
			
				|  |  | +    ac_etl = SD_ETL(**AWS_CREDENTIALS)
 | 
	
		
			
				|  |  |      # print(ac_etl.budget_ETL(campaign_ids=["126327624499318"]))
 | 
	
		
			
				|  |  | -    print(ac_etl.reportV2_adsRecord_ETL(**{}))
 | 
	
		
			
				|  |  | +    print(ac_etl.reportV2_targets_matchedTarget_t2_ETL(**{}))
 |