質問のタイトルは申し訳ありませんが、私は必然的に助けが必要です:なぜ、私のコードはブロック全体ではなく、whileループの1行だけでループしますか?
私の目標は、exacttarget salesforce marketingクラウドAPIのすべてのレコードを取得するスクリプトを作成することです。私は正常にAPI呼び出しをセットアップし、DataFramesにデータを正常にインポートしました。
私は、 "MoreDataAvailable"の読み込みを中断して、 "Results_Message"が "MoreDataAvailable"の読み込みを停止し、どちらかから日付を制御できるロジックを設定する必要があるまで、 API呼び出しを呼び出すか、DataFrameを解析します。
「印刷Results_Messageは、」文字列「MoreDataAvailable」ここ
私のコードは、これまでのところで周りをループしているところ私のコードは、あなたがパースで私の試みを見ることができますライン94と95に、ライン44で立ち往生されます
import ET_Client
import pandas as pd
AggreateDF = pd.DataFrame()
Data_Aggregator = pd.DataFrame()
#Start_Date = "2016-02-20"
#End_Date = "2016-02-25"
#retrieveDate = '2016-07-25T13:00:00.000'
Export_Dir = 'C:/temp/'
try:
debug = False
stubObj = ET_Client.ET_Client(False, debug)
print '>>>BounceEvents'
getBounceEvent = ET_Client.ET_BounceEvent()
getBounceEvent.auth_stub = stubObj
getBounceEvent.search_filter = {'Property' : 'EventDate','SimpleOperator' : 'greaterThan','Value' : '2016-02-22T13:00:00.000'}
getResponse1 = getBounceEvent.get()
ResponseResultsBounces = getResponse1.results
Results_Message = getResponse1.message
print(Results_Message)
#EventDate = "2016-05-09"
print "This is orginial " + str(Results_Message)
#print ResponseResultsBounces
i = 1
while (Results_Message == 'MoreDataAvailable'):
#if i > 5: break
print Results_Message
results1 = getResponse1.results
#print(results1)
i = i + 1
ClientIDBounces = []
partner_keys1 = []
created_dates1 = []
modified_date1 = []
ID1 = []
ObjectID1 = []
SendID1 = []
SubscriberKey1 = []
EventDate1 = []
EventType1 = []
TriggeredSendDefinitionObjectID1 = []
BatchID1 = []
SMTPCode = []
BounceCategory = []
SMTPReason = []
BounceType = []
for BounceEvent in ResponseResultsBounces:
ClientIDBounces.append(str(BounceEvent['Client']['ID']))
partner_keys1.append(BounceEvent['PartnerKey'])
created_dates1.append(BounceEvent['CreatedDate'])
modified_date1.append(BounceEvent['ModifiedDate'])
ID1.append(BounceEvent['ID'])
ObjectID1.append(BounceEvent['ObjectID'])
SendID1.append(BounceEvent['SendID'])
SubscriberKey1.append(BounceEvent['SubscriberKey'])
EventDate1.append(BounceEvent['EventDate'])
EventType1.append(BounceEvent['EventType'])
TriggeredSendDefinitionObjectID1.append(BounceEvent['TriggeredSendDefinitionObjectID'])
BatchID1.append(BounceEvent['BatchID'])
SMTPCode.append(BounceEvent['SMTPCode'])
BounceCategory.append(BounceEvent['BounceCategory'])
SMTPReason.append(BounceEvent['SMTPReason'])
BounceType.append(BounceEvent['BounceType'])
df1 = pd.DataFrame({'ClientID': ClientIDBounces, 'PartnerKey': partner_keys1,
'CreatedDate' : created_dates1, 'ModifiedDate': modified_date1,
'ID':ID1, 'ObjectID': ObjectID1,'SendID':SendID1,'SubscriberKey':SubscriberKey1,
'EventDate':EventDate1,'EventType':EventType1,'TriggeredSendDefinitionObjectID':TriggeredSendDefinitionObjectID1,
'BatchID':BatchID1,'SMTPCode':SMTPCode,'BounceCategory':BounceCategory,'SMTPReason':SMTPReason,'BounceType':BounceType})
#print df1
#df1 = df1[(df1.EventDate > "2016-02-20") & (df1.EventDate < "2016-02-25")]
#AggreateDF = AggreateDF[(AggreateDF.EventDate > Start_Date) and (AggreateDF.EventDate < End_Date)]
print(df1['ID'].max())
AggreateDF = AggreateDF.append(df1)
print(AggreateDF.shape)
#df1 = df1[(df1.EventDate > "2016-02-20") and (df1.EventDate < "2016-03-25")]
#AggreateDF = AggreateDF[(AggreateDF.EventDate > Start_Date) and (AggreateDF.EventDate < End_Date)]
print("Final Aggregate DF is: " + str(AggreateDF.shape))
#EXPORT TO CSV
AggreateDF.to_csv(Export_Dir +'DataTest1.csv')
#with pd.option_context('display.max_rows',10000):
#print (df_masked1.shape)
#print df_masked1
except Exception as e:
print 'Caught exception: ' + str(e.message)
print e
私のコードは、データを解析する前に、私はデータの取得orginalフォーマットは、SOAP応答で、これは次のとおりです。データフレームが、運と私は日付を指定しているライン32上の運からの直接日付それはどのように見えるか(下)。 SOAP応答からEventDateに基づいてレコードを直接解析することはできますか?これは理にかなって
}, (BounceEvent){
Client =
(ClientID){
ID = 1111111
}
PartnerKey = None
CreatedDate = 2016-05-12 07:32:20.000937
ModifiedDate = 2016-05-12 07:32:20.000937
ID = 1111111
ObjectID = "1111111"
SendID = 1111111
SubscriberKey = "[email protected]"
EventDate = 2016-05-12 07:32:20.000937
EventType = "HardBounce"
TriggeredSendDefinitionObjectID = "aa111aaa"
BatchID = 1111111
SMTPCode = "1111111"
BounceCategory = "Hard bounce - User Unknown"
SMTPReason = "aaaa"
BounceType = "immediate"
ホープ、これは助けのための私の必死の嘆願です。
ありがとうございます!
現在出力しているものは何ですか?あなたは今、少し不明なように、あなたが求めているものを明確にしようとすることができますか? – depperm
申し訳ありません。現在私が求めています何 「印刷Results_Messageを」私はライン44上で起こっていると考えている文字列「MoreDataAvailableを」outputtnigされることは次のとおりです。 1.私はちょうど私がライン44であると考えているものにループからコードを防ぐにはどうすればよいと実際にコードを実行し、データフレームにデータを配置TILL "Result_Message"は "MoreDataAvailable"と等しくない 2. API呼び出し自体または使用するeventDateを制御できるデータフレームにロジックを設定するにはどうすればよいですか。たとえば、2016-07-20から2016-07-21までのレコードのみを表示したいのですが、 これが意味すると思っています。 – RustyShackleford