|
@@ -78,13 +78,15 @@ class Common_ETLMethod(BaseClient):
|
|
|
def get_keyOvalue(self,expressions, result: Literal['value', 'type']):
|
|
|
if expressions not in [None,pd.NA,pd.NaT]:
|
|
|
if len(expressions) > 1:
|
|
|
- return [i[result] for i in expressions]
|
|
|
+ return [i.get(result) for i in expressions]
|
|
|
if len(expressions) == 1:
|
|
|
- sub_ = expressions[0][result]
|
|
|
- if type(sub_) == str:
|
|
|
+ sub_ = expressions[0].get(result)
|
|
|
+ if sub_ is None:
|
|
|
+ return None
|
|
|
+ elif type(sub_) == str:
|
|
|
return sub_
|
|
|
elif type(sub_) == list:
|
|
|
- return [i[result] for i in sub_]
|
|
|
+ return [i.get(result) for i in sub_]
|
|
|
else:
|
|
|
return expressions
|
|
|
else:
|
|
@@ -167,9 +169,14 @@ class SP_ETL(SPClient, Common_ETLMethod):
|
|
|
return self.columnsName_modify(df_keywords_SP)
|
|
|
|
|
|
def targets_ETL(self):
|
|
|
- list_targets = list(self.iter_targets())
|
|
|
+ list_targets = list(self.iter_targets(**{"includeExtendedDataFields": True}))
|
|
|
df_targets = pd.json_normalize(list_targets)
|
|
|
+ print("--")
|
|
|
df_targets = self.TZ_Deal(df_targets, ["extendedData.creationDateTime", "extendedData.lastUpdateDateTime"])
|
|
|
+ df_targets['resolvedExpressions_type'] = df_targets['resolvedExpression'].map(
|
|
|
+ lambda x: self.get_keyOvalue(x, 'type'))
|
|
|
+ df_targets['resolvedExpressions_value'] = df_targets['resolvedExpression'].map(
|
|
|
+ lambda x: self.get_keyOvalue(x, 'value'))
|
|
|
return self.columnsName_modify(df_targets)
|
|
|
|
|
|
def budget_ETL(self, campaign_ids: list):
|
|
@@ -1002,8 +1009,8 @@ class SD_ETL(SDClient, Common_ETLMethod):
|
|
|
df_targets = pd.json_normalize(list_targets)
|
|
|
# df_targets = self.expression_split(df_targets, "resolvedExpression")
|
|
|
df_targets = self.id_type_trans(df_targets)
|
|
|
- df_targets['resolvedExpressions_type'] = df_targets['resolvedExpressions'].map(lambda x:self.get_keyOvalue(x,'type'))
|
|
|
- df_targets['resolvedExpressions_value'] = df_targets['resolvedExpressions'].map(lambda x:self.get_keyOvalue(x,'value'))
|
|
|
+ df_targets['resolvedExpressions_type'] = df_targets['resolvedExpression'].map(lambda x:self.get_keyOvalue(x,'type'))
|
|
|
+ df_targets['resolvedExpressions_value'] = df_targets['resolvedExpression'].map(lambda x:self.get_keyOvalue(x,'value'))
|
|
|
return self.columnsName_modify(df_targets)
|
|
|
|
|
|
def budget_ETL(self, campaignsIds: list):
|
|
@@ -1784,9 +1791,12 @@ if __name__ == '__main__':
|
|
|
conn = Common_ETLMethod(**AWS_CREDENTIALS).clickhouse_connect()
|
|
|
|
|
|
# SD
|
|
|
- ac_etl = SD_ETL(**AWS_CREDENTIALS)
|
|
|
- ls = ac_etl.reportV2_campaignsRecord_t2_ETL(conn)
|
|
|
+ ac_etl = SB_ETL(**AWS_CREDENTIALS)
|
|
|
+ # ls = ac_etl.reportV2_campaignsRecord_t2_ETL(conn)
|
|
|
+ ls = ac_etl.targets_ETL()
|
|
|
print(ls)
|
|
|
+ # ls.to_csv('temp.csv')
|
|
|
+ # print(ls)
|
|
|
# print(ls.info())
|
|
|
# print(ls.to_excel('obse11.xlsx'))
|
|
|
# ac_etl.reportV2_campaignsRecord_t2_ETL(conn)
|