|  | @@ -486,6 +486,46 @@ class SB_ETL(SBClient, Common_ETLMethod):
 | 
											
												
													
														|  |          df_budget = self.TZ_Deal(df_budget, ["usageUpdatedTimestamp"])
 |  |          df_budget = self.TZ_Deal(df_budget, ["usageUpdatedTimestamp"])
 | 
											
												
													
														|  |          return self.columnsName_modify(df_budget)
 |  |          return self.columnsName_modify(df_budget)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    def reportV3_campaign_sbCampaigns_ETL(self, conn, params={}):
 | 
											
												
													
														|  | 
 |  | +        timeZone_ = self.timeZone()
 | 
											
												
													
														|  | 
 |  | +        today = datetime.now(tz=pytz.timezone(timeZone_))
 | 
											
												
													
														|  | 
 |  | +        if params.get("endDate") == None:
 | 
											
												
													
														|  | 
 |  | +            params["endDate"] = (datetime(today.year, today.month, today.day) - timedelta(days=1)).strftime("%Y-%m-%d")
 | 
											
												
													
														|  | 
 |  | +        if params.get("startDate") == None:
 | 
											
												
													
														|  | 
 |  | +            params["startDate"] = (datetime(today.year, today.month, today.day) - timedelta(days=1)).strftime(
 | 
											
												
													
														|  | 
 |  | +                "%Y-%m-%d")
 | 
											
												
													
														|  | 
 |  | +        params['reportType'] = "sbCampaigns" #sbCampaigns
 | 
											
												
													
														|  | 
 |  | +        params['columns'] = ['campaignId',
 | 
											
												
													
														|  | 
 |  | +                             'campaignName','campaignBudgetAmount', 'campaignBudgetCurrencyCode', 'campaignBudgetType', 'topOfSearchImpressionShare',
 | 
											
												
													
														|  | 
 |  | +                             'addToCart', 'addToCartClicks', 'addToCartRate', 'brandedSearches', 'brandedSearchesClicks',
 | 
											
												
													
														|  | 
 |  | +                             'campaignBudgetAmount', 'campaignBudgetCurrencyCode', 'campaignBudgetType',  'campaignStatus', 'clicks', 'cost',
 | 
											
												
													
														|  | 
 |  | +                             'costType', 'date', 'detailPageViews','detailPageViewsClicks', 'eCPAddToCart', 'endDate', 'impressions', 'newToBrandDetailPageViewRate',
 | 
											
												
													
														|  | 
 |  | +                             'newToBrandDetailPageViews', 'newToBrandDetailPageViewsClicks', 'newToBrandECPDetailPageView',
 | 
											
												
													
														|  | 
 |  | +                             'newToBrandPurchases', 'newToBrandPurchasesClicks', 'newToBrandPurchasesPercentage',
 | 
											
												
													
														|  | 
 |  | +                             'newToBrandPurchasesRate', 'newToBrandSales', 'newToBrandSalesClicks', 'newToBrandSalesPercentage',
 | 
											
												
													
														|  | 
 |  | +                             'newToBrandUnitsSold', 'newToBrandUnitsSoldClicks', 'newToBrandUnitsSoldPercentage', 'purchases',
 | 
											
												
													
														|  | 
 |  | +                             'purchasesClicks', 'purchasesPromoted', 'sales', 'salesClicks', 'salesPromoted', 'startDate',
 | 
											
												
													
														|  | 
 |  | +                             'topOfSearchImpressionShare', 'unitsSold', 'unitsSoldClicks', 'video5SecondViewRate',
 | 
											
												
													
														|  | 
 |  | +                             'video5SecondViews', 'videoCompleteViews', 'videoFirstQuartileViews', 'videoMidpointViews',
 | 
											
												
													
														|  | 
 |  | +                             'videoThirdQuartileViews', 'videoUnmutes', 'viewabilityRate', 'viewableImpressions',
 | 
											
												
													
														|  | 
 |  | +                             'viewClickThroughRate'
 | 
											
												
													
														|  | 
 |  | +        ]  # 'startDate', 'endDate',
 | 
											
												
													
														|  | 
 |  | +        params['groupby'] = ['campaign']
 | 
											
												
													
														|  | 
 |  | +        params['timeUnit'] = 'DAILY'
 | 
											
												
													
														|  | 
 |  | +        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)
 | 
											
												
													
														|  | 
 |  | +        df_report = self.type_trans(df_report, params['columns'], timeZone_, extra_columns=[])
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        print(df_report)
 | 
											
												
													
														|  | 
 |  | +        # conn.insert_df("AmazonReport.SB_sbPurchasedProduct_asinV3", df_report[params['columns']])
 | 
											
												
													
														|  | 
 |  | +        # print("插入完成SB_sbPurchasedProduct_asinV3")
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        return df_report[params['columns']]
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      def reportV3_purchasedAsinRecord_ETL(self, conn, params={}):
 |  |      def reportV3_purchasedAsinRecord_ETL(self, conn, params={}):
 | 
											
												
													
														|  |          timeZone_ = self.timeZone()
 |  |          timeZone_ = self.timeZone()
 | 
											
												
													
														|  |          today = datetime.now(tz=pytz.timezone(timeZone_))
 |  |          today = datetime.now(tz=pytz.timezone(timeZone_))
 | 
											
										
											
												
													
														|  | @@ -511,6 +551,7 @@ class SB_ETL(SBClient, Common_ETLMethod):
 | 
											
												
													
														|  |          df_report = pd.json_normalize(list_report)
 |  |          df_report = pd.json_normalize(list_report)
 | 
											
												
													
														|  |          df_report = self.type_trans(df_report, params['columns'], timeZone_, extra_columns=[])
 |  |          df_report = self.type_trans(df_report, params['columns'], timeZone_, extra_columns=[])
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        print(df_report)
 | 
											
												
													
														|  |          conn.insert_df("AmazonReport.SB_sbPurchasedProduct_asinV3", df_report[params['columns']])
 |  |          conn.insert_df("AmazonReport.SB_sbPurchasedProduct_asinV3", df_report[params['columns']])
 | 
											
												
													
														|  |          print("插入完成SB_sbPurchasedProduct_asinV3")
 |  |          print("插入完成SB_sbPurchasedProduct_asinV3")
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -982,6 +1023,35 @@ class SD_ETL(SDClient, Common_ETLMethod):
 | 
											
												
													
														|  |          df_budget = self.TZ_Deal(df_budget, ["usageUpdatedTimestamp"])
 |  |          df_budget = self.TZ_Deal(df_budget, ["usageUpdatedTimestamp"])
 | 
											
												
													
														|  |          return self.columnsName_modify(df_budget)
 |  |          return self.columnsName_modify(df_budget)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    def reportV3_campaign_sdCampaigns_ETL(self, conn, params={}):
 | 
											
												
													
														|  | 
 |  | +        timeZone_ = self.timeZone()
 | 
											
												
													
														|  | 
 |  | +        today = datetime.now(tz=pytz.timezone(timeZone_))
 | 
											
												
													
														|  | 
 |  | +        if params.get("endDate") == None:
 | 
											
												
													
														|  | 
 |  | +            params["endDate"] = (datetime(today.year, today.month, today.day) - timedelta(days=1)).strftime("%Y-%m-%d")
 | 
											
												
													
														|  | 
 |  | +        if params.get("startDate") == None:
 | 
											
												
													
														|  | 
 |  | +            params["startDate"] = (datetime(today.year, today.month, today.day) - timedelta(days=1)).strftime(
 | 
											
												
													
														|  | 
 |  | +                "%Y-%m-%d")
 | 
											
												
													
														|  | 
 |  | +        params['reportType'] = "sdCampaigns"
 | 
											
												
													
														|  | 
 |  | +        params['columns'] = [
 | 
											
												
													
														|  | 
 |  | +            "impressions","clicks","cost","campaignId",'date'
 | 
											
												
													
														|  | 
 |  | +        ]  # 'startDate', 'endDate',
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        params['groupby'] = ['campaign']
 | 
											
												
													
														|  | 
 |  | +        params['timeUnit'] = 'DAILY'
 | 
											
												
													
														|  | 
 |  | +        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)
 | 
											
												
													
														|  | 
 |  | +        df_report = self.type_trans(df_report, params['columns'], timeZone_, extra_columns=[])
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        print(df_report)
 | 
											
												
													
														|  | 
 |  | +        # conn.insert_df("AmazonReport.SB_sbPurchasedProduct_asinV3", df_report[params['columns']])
 | 
											
												
													
														|  | 
 |  | +        # print("插入完成SB_sbPurchasedProduct_asinV3")
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        return df_report[params['columns']]
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      campaigns_metrics = [
 |  |      campaigns_metrics = [
 | 
											
												
													
														|  |          'campaignId','campaignName','impressions','clicks','cost','attributedBrandedSearches14d',
 |  |          'campaignId','campaignName','impressions','clicks','cost','attributedBrandedSearches14d',
 | 
											
												
													
														|  |          'attributedConversions1d','attributedConversions1dSameSKU','attributedConversions7d',
 |  |          'attributedConversions1d','attributedConversions1dSameSKU','attributedConversions7d',
 | 
											
										
											
												
													
														|  | @@ -1469,8 +1539,8 @@ if __name__ == '__main__':
 | 
											
												
													
														|  |      conn = Common_ETLMethod(**AWS_CREDENTIALS).clickhouse_connect()
 |  |      conn = Common_ETLMethod(**AWS_CREDENTIALS).clickhouse_connect()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      # SD
 |  |      # SD
 | 
											
												
													
														|  | -    ac_etl = SP_ETL(**AWS_CREDENTIALS)
 |  | 
 | 
											
												
													
														|  | -    ls = ac_etl.reportV3_campaignPlacement_spCampaignsETL(conn,params={"startDate":"2023-10-28","endDate":"2023-10-28"})
 |  | 
 | 
											
												
													
														|  | 
 |  | +    ac_etl = SD_ETL(**AWS_CREDENTIALS)
 | 
											
												
													
														|  | 
 |  | +    ls = ac_etl.reportV3_campaign_sdCampaigns_ETL(conn)
 | 
											
												
													
														|  |      print(ls)
 |  |      print(ls)
 | 
											
												
													
														|  |      # print(ls.to_excel('obse11.xlsx'))
 |  |      # print(ls.to_excel('obse11.xlsx'))
 | 
											
												
													
														|  |      # ac_etl.reportV2_campaignsRecord_t2_ETL(conn)
 |  |      # ac_etl.reportV2_campaignsRecord_t2_ETL(conn)
 |