Hi,
we're using the data-sources-api of analytics-1.4-apis and we got this error: "invalid columns, at least one is required and columns must match for each upload" when we try to use DataSources.UploadData.
We using python 3.7 with the requests library.
As required by the APi ( sees the doc ), on the post request we define the columns parameter as array of string:
columns = ["Date", "Evar 96", "Event 97", "Event 99", "Event 98", "Event 100"]
rows = [
["12/31/2020", "100011173", "1", "2", "3", "4"],
["01/29/2021", "100011173", "1", "3", "4", "5"],
["01/30/2021", "100011173", "2", "6", "5", "6"],
["01/31/2021", "100011173", "3", "4", "5", "6"],
["02/01/2021", "100011173", "4", "5", "6", "7"],
]
and give it to the API as item of the payload:
payload = {
"columns": columns,
"dataSourceID": dataSourceID,
"finished": True,
"jobName": "pippo123",
"reportSuiteID": rsid,
"rows": rows
}
url = "https://api.omniture.com/admin/1.4/rest/?method="
response = requests.post(url + "DataSources.UploadData", headers=header, data=payload)
Now we don't undertand because we got the error?
Thanks, Stefano G.
Solved! Go to Solution.
Views
Replies
Total Likes
Can you check if "rows" matches with columns? If you can share rows with some the values here, I can review that.
Can you check if "rows" matches with columns? If you can share rows with some the values here, I can review that.
Hi Khurshid,
I've updated the question with the rows that i'm using in the test
rows = [
["12/31/2020", "100011173", "1", "2", "3", "4"],
["01/29/2021", "100011173", "1", "3", "4", "5"],
["01/30/2021", "100011173", "2", "6", "5", "6"],
["01/31/2021", "100011173", "3", "4", "5", "6"],
["02/01/2021", "100011173", "4", "5", "6", "7"],
]
Views
Replies
Total Likes
Views
Replies
Total Likes
Hi Khurshid,
i found the issue, the cause is not the comma (Python allow trailing comma in a dictonary and clean it before to convert the dict in a "real" JSON).
To resolve the issue, in the requests.post call I must pass the parameters as json and not as data:
response = requests.post(url + "DataSources.UploadData", headers=header, json=payload)
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Likes
Replies