Dataiku 12.4 API breaking change
Turribeach
Dataiku DSS Core Designer, Neuron, Dataiku DSS Adv Designer, Registered, Neuron 2023, Circle Member Posts: 2,590 Neuron
For anyone out there moving to Dataiku 12.4 be aware that there is a breaking change in Dataiku 12.4 API. Dataiku has decided to add add timezone to their date/time objects returned by the API so if you do any sort of date/time calculations with the API date/time fields you might get an error.
The following sample code:
import dataikuapi
import datetime
# Create a Dataiku client
dataiku_url = 'url'
dataiku_api_key = 'key'
dataiku_client = dataikuapi.DSSClient(dataiku_url, dataiku_api_key)
dataiku_client._session.verify = False
project = dataiku_client.get_project('project')
scenario = project.get_scenario('scenario')
last_run = scenario.get_last_finished_run()
run_since_delta = datetime.datetime.now() - last_run.end_time
Fails with this error:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[6], line 1 ----> 1 run_since_delta = datetime.datetime.now() - last_run.end_time TypeError: can't subtract offset-naive and offset-aware datetimes
Tagged:
Best Answer
-
Turribeach Dataiku DSS Core Designer, Neuron, Dataiku DSS Adv Designer, Registered, Neuron 2023, Circle Member Posts: 2,590 NeuronForgot to post posible solutions. If you are outside Dataiku one option is to downgrade the Dataiku API package:
pip install dataiku-api-client==12.3.2
Another option is to strip out the time zone component from the date/time object:
run_since_delta = datetime.datetime.now() - last_run.end_time.replace(tzinfo=None)
And the cleanest solution is to modify your code to also use time zone:
import pytz run_since_delta = datetime.datetime.now().replace(tzinfo=pytz.UTC) - last_run.end_time
But this will probably require further changes in your code.