|
@@ -486,6 +486,46 @@ class SB_ETL(SBClient, Common_ETLMethod):
|
|
|
df_budget = self.TZ_Deal(df_budget, ["usageUpdatedTimestamp"])
|
|
|
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={}):
|
|
|
timeZone_ = self.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 = 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")
|
|
|
|
|
@@ -982,6 +1023,35 @@ class SD_ETL(SDClient, Common_ETLMethod):
|
|
|
df_budget = self.TZ_Deal(df_budget, ["usageUpdatedTimestamp"])
|
|
|
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 = [
|
|
|
'campaignId','campaignName','impressions','clicks','cost','attributedBrandedSearches14d',
|
|
|
'attributedConversions1d','attributedConversions1dSameSKU','attributedConversions7d',
|
|
@@ -1469,8 +1539,8 @@ if __name__ == '__main__':
|
|
|
conn = Common_ETLMethod(**AWS_CREDENTIALS).clickhouse_connect()
|
|
|
|
|
|
# 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.to_excel('obse11.xlsx'))
|
|
|
# ac_etl.reportV2_campaignsRecord_t2_ETL(conn)
|