Skip to content

Commit 2914688

Browse files
Merge pull request #73 from domoinc/ds-upsert
upsert support
2 parents 94c33af + ea0b70a commit 2914688

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

pydomo/__init__.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from pandas import to_datetime
1717
from io import StringIO
1818
import logging
19+
import json
1920

2021
DOMO = """####################################################################################################
2122
####################################################################################################
@@ -195,21 +196,16 @@ def ds_get(self, dataset_id):
195196
df[col] = to_datetime(df[col])
196197
except ValueError:
197198
pass
199+
except TypeError:
200+
pass
198201

199202
return df
200203

201-
def ds_create(self, df_up, name, description=''):
202-
dsr = DataSetRequest()
203-
dsr.name = name
204-
dsr.description = description
205-
dsr.schema = Schema([Column(ColumnType.STRING, 'tt1'),
206-
Column(ColumnType.STRING, 'tt2')])
207-
208-
new_ds_info = self.datasets.create(dsr)
209-
210-
self.utilities.stream_upload(new_ds_info['id'],df_up,warn_schema_change=False)
211-
212-
return new_ds_info['id']
204+
def ds_create(self, df_up, name, description='', update_method='REPLACE', key_column_names=''):
205+
new_stream = self.utilities.stream_create(df_up, name, description, update_method, key_column_names)
206+
ds_id = json.loads(new_stream.content.decode('utf-8'))['dataSet']['id']
207+
self.utilities.stream_upload(ds_id,df_up,warn_schema_change=False)
208+
return ds_id
213209

214210

215211
def ds_update(self, ds_id, df_up):

pydomo/utilities/UtilitiesClient.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import json
33
import math
44
import sys
5+
import json
56

67
from pydomo.DomoAPIClient import DomoAPIClient
78
from pydomo.datasets import DataSetClient
@@ -89,4 +90,14 @@ def stream_upload(self, ds_id, df_up, warn_schema_change=True):
8990

9091
result = self.stream.commit_execution(stream_id, exec_id)
9192

92-
return result
93+
return result
94+
95+
def stream_create(self, up_ds, name, description, updateMethod='REPLACE', keyColumnNames=''):
96+
df_schema = self.data_schema(up_ds)
97+
req_body = {'dataSet': {'name': name, 'description': description, 'schema': {'columns': df_schema}}, 'updateMethod': updateMethod}
98+
if( updateMethod == 'UPSERT' ):
99+
req_body['keyColumnNames'] = keyColumnNames
100+
# return req_body
101+
st_created = self.transport.post('/v1/streams/', req_body, {})
102+
return(st_created)
103+
return json.loads(st_created.content.decode('utf-8'))['dataSet']['id']

0 commit comments

Comments
 (0)