databricks-sdk 0.42.0__py3-none-any.whl → 0.44.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of databricks-sdk might be problematic. Click here for more details.
- databricks/sdk/__init__.py +23 -2
- databricks/sdk/service/apps.py +6 -0
- databricks/sdk/service/billing.py +31 -1
- databricks/sdk/service/catalog.py +26 -1
- databricks/sdk/service/cleanrooms.py +4 -73
- databricks/sdk/service/compute.py +50 -42
- databricks/sdk/service/dashboards.py +438 -0
- databricks/sdk/service/jobs.py +7 -0
- databricks/sdk/service/serving.py +1 -1
- databricks/sdk/service/settings.py +254 -84
- databricks/sdk/service/sharing.py +15 -6
- databricks/sdk/service/sql.py +145 -18
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.42.0.dist-info → databricks_sdk-0.44.0.dist-info}/METADATA +1 -1
- {databricks_sdk-0.42.0.dist-info → databricks_sdk-0.44.0.dist-info}/RECORD +19 -19
- {databricks_sdk-0.42.0.dist-info → databricks_sdk-0.44.0.dist-info}/LICENSE +0 -0
- {databricks_sdk-0.42.0.dist-info → databricks_sdk-0.44.0.dist-info}/NOTICE +0 -0
- {databricks_sdk-0.42.0.dist-info → databricks_sdk-0.44.0.dist-info}/WHEEL +0 -0
- {databricks_sdk-0.42.0.dist-info → databricks_sdk-0.44.0.dist-info}/top_level.txt +0 -0
|
@@ -20,6 +20,66 @@ from databricks.sdk.service import sql
|
|
|
20
20
|
# all definitions in this file are in alphabetical order
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
@dataclass
|
|
24
|
+
class CancelQueryExecutionResponse:
|
|
25
|
+
status: Optional[List[CancelQueryExecutionResponseStatus]] = None
|
|
26
|
+
|
|
27
|
+
def as_dict(self) -> dict:
|
|
28
|
+
"""Serializes the CancelQueryExecutionResponse into a dictionary suitable for use as a JSON request body."""
|
|
29
|
+
body = {}
|
|
30
|
+
if self.status: body['status'] = [v.as_dict() for v in self.status]
|
|
31
|
+
return body
|
|
32
|
+
|
|
33
|
+
def as_shallow_dict(self) -> dict:
|
|
34
|
+
"""Serializes the CancelQueryExecutionResponse into a shallow dictionary of its immediate attributes."""
|
|
35
|
+
body = {}
|
|
36
|
+
if self.status: body['status'] = self.status
|
|
37
|
+
return body
|
|
38
|
+
|
|
39
|
+
@classmethod
|
|
40
|
+
def from_dict(cls, d: Dict[str, any]) -> CancelQueryExecutionResponse:
|
|
41
|
+
"""Deserializes the CancelQueryExecutionResponse from a dictionary."""
|
|
42
|
+
return cls(status=_repeated_dict(d, 'status', CancelQueryExecutionResponseStatus))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass
|
|
46
|
+
class CancelQueryExecutionResponseStatus:
|
|
47
|
+
data_token: str
|
|
48
|
+
"""The token to poll for result asynchronously Example:
|
|
49
|
+
EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ"""
|
|
50
|
+
|
|
51
|
+
pending: Optional[Empty] = None
|
|
52
|
+
"""Represents an empty message, similar to google.protobuf.Empty, which is not available in the
|
|
53
|
+
firm right now."""
|
|
54
|
+
|
|
55
|
+
success: Optional[Empty] = None
|
|
56
|
+
"""Represents an empty message, similar to google.protobuf.Empty, which is not available in the
|
|
57
|
+
firm right now."""
|
|
58
|
+
|
|
59
|
+
def as_dict(self) -> dict:
|
|
60
|
+
"""Serializes the CancelQueryExecutionResponseStatus into a dictionary suitable for use as a JSON request body."""
|
|
61
|
+
body = {}
|
|
62
|
+
if self.data_token is not None: body['data_token'] = self.data_token
|
|
63
|
+
if self.pending: body['pending'] = self.pending.as_dict()
|
|
64
|
+
if self.success: body['success'] = self.success.as_dict()
|
|
65
|
+
return body
|
|
66
|
+
|
|
67
|
+
def as_shallow_dict(self) -> dict:
|
|
68
|
+
"""Serializes the CancelQueryExecutionResponseStatus into a shallow dictionary of its immediate attributes."""
|
|
69
|
+
body = {}
|
|
70
|
+
if self.data_token is not None: body['data_token'] = self.data_token
|
|
71
|
+
if self.pending: body['pending'] = self.pending
|
|
72
|
+
if self.success: body['success'] = self.success
|
|
73
|
+
return body
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def from_dict(cls, d: Dict[str, any]) -> CancelQueryExecutionResponseStatus:
|
|
77
|
+
"""Deserializes the CancelQueryExecutionResponseStatus from a dictionary."""
|
|
78
|
+
return cls(data_token=d.get('data_token', None),
|
|
79
|
+
pending=_from_dict(d, 'pending', Empty),
|
|
80
|
+
success=_from_dict(d, 'success', Empty))
|
|
81
|
+
|
|
82
|
+
|
|
23
83
|
@dataclass
|
|
24
84
|
class CronSchedule:
|
|
25
85
|
quartz_cron_expression: str
|
|
@@ -207,6 +267,87 @@ class DeleteSubscriptionResponse:
|
|
|
207
267
|
return cls()
|
|
208
268
|
|
|
209
269
|
|
|
270
|
+
@dataclass
|
|
271
|
+
class Empty:
|
|
272
|
+
"""Represents an empty message, similar to google.protobuf.Empty, which is not available in the
|
|
273
|
+
firm right now."""
|
|
274
|
+
|
|
275
|
+
def as_dict(self) -> dict:
|
|
276
|
+
"""Serializes the Empty into a dictionary suitable for use as a JSON request body."""
|
|
277
|
+
body = {}
|
|
278
|
+
return body
|
|
279
|
+
|
|
280
|
+
def as_shallow_dict(self) -> dict:
|
|
281
|
+
"""Serializes the Empty into a shallow dictionary of its immediate attributes."""
|
|
282
|
+
body = {}
|
|
283
|
+
return body
|
|
284
|
+
|
|
285
|
+
@classmethod
|
|
286
|
+
def from_dict(cls, d: Dict[str, any]) -> Empty:
|
|
287
|
+
"""Deserializes the Empty from a dictionary."""
|
|
288
|
+
return cls()
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
@dataclass
|
|
292
|
+
class ExecutePublishedDashboardQueryRequest:
|
|
293
|
+
"""Execute query request for published Dashboards. Since published dashboards have the option of
|
|
294
|
+
running as the publisher, the datasets, warehouse_id are excluded from the request and instead
|
|
295
|
+
read from the source (lakeview-config) via the additional parameters (dashboardName and
|
|
296
|
+
dashboardRevisionId)"""
|
|
297
|
+
|
|
298
|
+
dashboard_name: str
|
|
299
|
+
"""Dashboard name and revision_id is required to retrieve PublishedDatasetDataModel which contains
|
|
300
|
+
the list of datasets, warehouse_id, and embedded_credentials"""
|
|
301
|
+
|
|
302
|
+
dashboard_revision_id: str
|
|
303
|
+
|
|
304
|
+
override_warehouse_id: Optional[str] = None
|
|
305
|
+
"""A dashboard schedule can override the warehouse used as compute for processing the published
|
|
306
|
+
dashboard queries"""
|
|
307
|
+
|
|
308
|
+
def as_dict(self) -> dict:
|
|
309
|
+
"""Serializes the ExecutePublishedDashboardQueryRequest into a dictionary suitable for use as a JSON request body."""
|
|
310
|
+
body = {}
|
|
311
|
+
if self.dashboard_name is not None: body['dashboard_name'] = self.dashboard_name
|
|
312
|
+
if self.dashboard_revision_id is not None: body['dashboard_revision_id'] = self.dashboard_revision_id
|
|
313
|
+
if self.override_warehouse_id is not None: body['override_warehouse_id'] = self.override_warehouse_id
|
|
314
|
+
return body
|
|
315
|
+
|
|
316
|
+
def as_shallow_dict(self) -> dict:
|
|
317
|
+
"""Serializes the ExecutePublishedDashboardQueryRequest into a shallow dictionary of its immediate attributes."""
|
|
318
|
+
body = {}
|
|
319
|
+
if self.dashboard_name is not None: body['dashboard_name'] = self.dashboard_name
|
|
320
|
+
if self.dashboard_revision_id is not None: body['dashboard_revision_id'] = self.dashboard_revision_id
|
|
321
|
+
if self.override_warehouse_id is not None: body['override_warehouse_id'] = self.override_warehouse_id
|
|
322
|
+
return body
|
|
323
|
+
|
|
324
|
+
@classmethod
|
|
325
|
+
def from_dict(cls, d: Dict[str, any]) -> ExecutePublishedDashboardQueryRequest:
|
|
326
|
+
"""Deserializes the ExecutePublishedDashboardQueryRequest from a dictionary."""
|
|
327
|
+
return cls(dashboard_name=d.get('dashboard_name', None),
|
|
328
|
+
dashboard_revision_id=d.get('dashboard_revision_id', None),
|
|
329
|
+
override_warehouse_id=d.get('override_warehouse_id', None))
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
@dataclass
|
|
333
|
+
class ExecuteQueryResponse:
|
|
334
|
+
|
|
335
|
+
def as_dict(self) -> dict:
|
|
336
|
+
"""Serializes the ExecuteQueryResponse into a dictionary suitable for use as a JSON request body."""
|
|
337
|
+
body = {}
|
|
338
|
+
return body
|
|
339
|
+
|
|
340
|
+
def as_shallow_dict(self) -> dict:
|
|
341
|
+
"""Serializes the ExecuteQueryResponse into a shallow dictionary of its immediate attributes."""
|
|
342
|
+
body = {}
|
|
343
|
+
return body
|
|
344
|
+
|
|
345
|
+
@classmethod
|
|
346
|
+
def from_dict(cls, d: Dict[str, any]) -> ExecuteQueryResponse:
|
|
347
|
+
"""Deserializes the ExecuteQueryResponse from a dictionary."""
|
|
348
|
+
return cls()
|
|
349
|
+
|
|
350
|
+
|
|
210
351
|
@dataclass
|
|
211
352
|
class GenieAttachment:
|
|
212
353
|
"""Genie AI Response"""
|
|
@@ -513,6 +654,25 @@ class GenieStartConversationResponse:
|
|
|
513
654
|
message_id=d.get('message_id', None))
|
|
514
655
|
|
|
515
656
|
|
|
657
|
+
@dataclass
|
|
658
|
+
class GetPublishedDashboardEmbeddedResponse:
|
|
659
|
+
|
|
660
|
+
def as_dict(self) -> dict:
|
|
661
|
+
"""Serializes the GetPublishedDashboardEmbeddedResponse into a dictionary suitable for use as a JSON request body."""
|
|
662
|
+
body = {}
|
|
663
|
+
return body
|
|
664
|
+
|
|
665
|
+
def as_shallow_dict(self) -> dict:
|
|
666
|
+
"""Serializes the GetPublishedDashboardEmbeddedResponse into a shallow dictionary of its immediate attributes."""
|
|
667
|
+
body = {}
|
|
668
|
+
return body
|
|
669
|
+
|
|
670
|
+
@classmethod
|
|
671
|
+
def from_dict(cls, d: Dict[str, any]) -> GetPublishedDashboardEmbeddedResponse:
|
|
672
|
+
"""Deserializes the GetPublishedDashboardEmbeddedResponse from a dictionary."""
|
|
673
|
+
return cls()
|
|
674
|
+
|
|
675
|
+
|
|
516
676
|
class LifecycleState(Enum):
|
|
517
677
|
|
|
518
678
|
ACTIVE = 'ACTIVE'
|
|
@@ -667,6 +827,7 @@ class MessageErrorType(Enum):
|
|
|
667
827
|
REPLY_PROCESS_TIMEOUT_EXCEPTION = 'REPLY_PROCESS_TIMEOUT_EXCEPTION'
|
|
668
828
|
RETRYABLE_PROCESSING_EXCEPTION = 'RETRYABLE_PROCESSING_EXCEPTION'
|
|
669
829
|
SQL_EXECUTION_EXCEPTION = 'SQL_EXECUTION_EXCEPTION'
|
|
830
|
+
STOP_PROCESS_DUE_TO_AUTO_REGENERATE = 'STOP_PROCESS_DUE_TO_AUTO_REGENERATE'
|
|
670
831
|
TABLES_MISSING_EXCEPTION = 'TABLES_MISSING_EXCEPTION'
|
|
671
832
|
TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION = 'TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION'
|
|
672
833
|
TOO_MANY_TABLES_EXCEPTION = 'TOO_MANY_TABLES_EXCEPTION'
|
|
@@ -747,6 +908,74 @@ class MigrateDashboardRequest:
|
|
|
747
908
|
update_parameter_syntax=d.get('update_parameter_syntax', None))
|
|
748
909
|
|
|
749
910
|
|
|
911
|
+
@dataclass
|
|
912
|
+
class PendingStatus:
|
|
913
|
+
data_token: str
|
|
914
|
+
"""The token to poll for result asynchronously Example:
|
|
915
|
+
EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ"""
|
|
916
|
+
|
|
917
|
+
def as_dict(self) -> dict:
|
|
918
|
+
"""Serializes the PendingStatus into a dictionary suitable for use as a JSON request body."""
|
|
919
|
+
body = {}
|
|
920
|
+
if self.data_token is not None: body['data_token'] = self.data_token
|
|
921
|
+
return body
|
|
922
|
+
|
|
923
|
+
def as_shallow_dict(self) -> dict:
|
|
924
|
+
"""Serializes the PendingStatus into a shallow dictionary of its immediate attributes."""
|
|
925
|
+
body = {}
|
|
926
|
+
if self.data_token is not None: body['data_token'] = self.data_token
|
|
927
|
+
return body
|
|
928
|
+
|
|
929
|
+
@classmethod
|
|
930
|
+
def from_dict(cls, d: Dict[str, any]) -> PendingStatus:
|
|
931
|
+
"""Deserializes the PendingStatus from a dictionary."""
|
|
932
|
+
return cls(data_token=d.get('data_token', None))
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
@dataclass
|
|
936
|
+
class PollQueryStatusResponse:
|
|
937
|
+
data: Optional[List[PollQueryStatusResponseData]] = None
|
|
938
|
+
|
|
939
|
+
def as_dict(self) -> dict:
|
|
940
|
+
"""Serializes the PollQueryStatusResponse into a dictionary suitable for use as a JSON request body."""
|
|
941
|
+
body = {}
|
|
942
|
+
if self.data: body['data'] = [v.as_dict() for v in self.data]
|
|
943
|
+
return body
|
|
944
|
+
|
|
945
|
+
def as_shallow_dict(self) -> dict:
|
|
946
|
+
"""Serializes the PollQueryStatusResponse into a shallow dictionary of its immediate attributes."""
|
|
947
|
+
body = {}
|
|
948
|
+
if self.data: body['data'] = self.data
|
|
949
|
+
return body
|
|
950
|
+
|
|
951
|
+
@classmethod
|
|
952
|
+
def from_dict(cls, d: Dict[str, any]) -> PollQueryStatusResponse:
|
|
953
|
+
"""Deserializes the PollQueryStatusResponse from a dictionary."""
|
|
954
|
+
return cls(data=_repeated_dict(d, 'data', PollQueryStatusResponseData))
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
@dataclass
|
|
958
|
+
class PollQueryStatusResponseData:
|
|
959
|
+
status: QueryResponseStatus
|
|
960
|
+
|
|
961
|
+
def as_dict(self) -> dict:
|
|
962
|
+
"""Serializes the PollQueryStatusResponseData into a dictionary suitable for use as a JSON request body."""
|
|
963
|
+
body = {}
|
|
964
|
+
if self.status: body['status'] = self.status.as_dict()
|
|
965
|
+
return body
|
|
966
|
+
|
|
967
|
+
def as_shallow_dict(self) -> dict:
|
|
968
|
+
"""Serializes the PollQueryStatusResponseData into a shallow dictionary of its immediate attributes."""
|
|
969
|
+
body = {}
|
|
970
|
+
if self.status: body['status'] = self.status
|
|
971
|
+
return body
|
|
972
|
+
|
|
973
|
+
@classmethod
|
|
974
|
+
def from_dict(cls, d: Dict[str, any]) -> PollQueryStatusResponseData:
|
|
975
|
+
"""Deserializes the PollQueryStatusResponseData from a dictionary."""
|
|
976
|
+
return cls(status=_from_dict(d, 'status', QueryResponseStatus))
|
|
977
|
+
|
|
978
|
+
|
|
750
979
|
@dataclass
|
|
751
980
|
class PublishRequest:
|
|
752
981
|
dashboard_id: Optional[str] = None
|
|
@@ -895,6 +1124,55 @@ class QueryAttachment:
|
|
|
895
1124
|
title=d.get('title', None))
|
|
896
1125
|
|
|
897
1126
|
|
|
1127
|
+
@dataclass
|
|
1128
|
+
class QueryResponseStatus:
|
|
1129
|
+
canceled: Optional[Empty] = None
|
|
1130
|
+
"""Represents an empty message, similar to google.protobuf.Empty, which is not available in the
|
|
1131
|
+
firm right now."""
|
|
1132
|
+
|
|
1133
|
+
closed: Optional[Empty] = None
|
|
1134
|
+
"""Represents an empty message, similar to google.protobuf.Empty, which is not available in the
|
|
1135
|
+
firm right now."""
|
|
1136
|
+
|
|
1137
|
+
pending: Optional[PendingStatus] = None
|
|
1138
|
+
|
|
1139
|
+
statement_id: Optional[str] = None
|
|
1140
|
+
"""The statement id in format(01eef5da-c56e-1f36-bafa-21906587d6ba) The statement_id should be
|
|
1141
|
+
identical to data_token in SuccessStatus and PendingStatus. This field is created for audit
|
|
1142
|
+
logging purpose to record the statement_id of all QueryResponseStatus."""
|
|
1143
|
+
|
|
1144
|
+
success: Optional[SuccessStatus] = None
|
|
1145
|
+
|
|
1146
|
+
def as_dict(self) -> dict:
|
|
1147
|
+
"""Serializes the QueryResponseStatus into a dictionary suitable for use as a JSON request body."""
|
|
1148
|
+
body = {}
|
|
1149
|
+
if self.canceled: body['canceled'] = self.canceled.as_dict()
|
|
1150
|
+
if self.closed: body['closed'] = self.closed.as_dict()
|
|
1151
|
+
if self.pending: body['pending'] = self.pending.as_dict()
|
|
1152
|
+
if self.statement_id is not None: body['statement_id'] = self.statement_id
|
|
1153
|
+
if self.success: body['success'] = self.success.as_dict()
|
|
1154
|
+
return body
|
|
1155
|
+
|
|
1156
|
+
def as_shallow_dict(self) -> dict:
|
|
1157
|
+
"""Serializes the QueryResponseStatus into a shallow dictionary of its immediate attributes."""
|
|
1158
|
+
body = {}
|
|
1159
|
+
if self.canceled: body['canceled'] = self.canceled
|
|
1160
|
+
if self.closed: body['closed'] = self.closed
|
|
1161
|
+
if self.pending: body['pending'] = self.pending
|
|
1162
|
+
if self.statement_id is not None: body['statement_id'] = self.statement_id
|
|
1163
|
+
if self.success: body['success'] = self.success
|
|
1164
|
+
return body
|
|
1165
|
+
|
|
1166
|
+
@classmethod
|
|
1167
|
+
def from_dict(cls, d: Dict[str, any]) -> QueryResponseStatus:
|
|
1168
|
+
"""Deserializes the QueryResponseStatus from a dictionary."""
|
|
1169
|
+
return cls(canceled=_from_dict(d, 'canceled', Empty),
|
|
1170
|
+
closed=_from_dict(d, 'closed', Empty),
|
|
1171
|
+
pending=_from_dict(d, 'pending', PendingStatus),
|
|
1172
|
+
statement_id=d.get('statement_id', None),
|
|
1173
|
+
success=_from_dict(d, 'success', SuccessStatus))
|
|
1174
|
+
|
|
1175
|
+
|
|
898
1176
|
@dataclass
|
|
899
1177
|
class QuerySchema:
|
|
900
1178
|
columns: Optional[List[QuerySchemaColumn]] = None
|
|
@@ -1218,6 +1496,35 @@ class SubscriptionSubscriberUser:
|
|
|
1218
1496
|
return cls(user_id=d.get('user_id', None))
|
|
1219
1497
|
|
|
1220
1498
|
|
|
1499
|
+
@dataclass
|
|
1500
|
+
class SuccessStatus:
|
|
1501
|
+
data_token: str
|
|
1502
|
+
"""The token to poll for result asynchronously Example:
|
|
1503
|
+
EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ"""
|
|
1504
|
+
|
|
1505
|
+
truncated: Optional[bool] = None
|
|
1506
|
+
"""Whether the query result is truncated (either by byte limit or row limit)"""
|
|
1507
|
+
|
|
1508
|
+
def as_dict(self) -> dict:
|
|
1509
|
+
"""Serializes the SuccessStatus into a dictionary suitable for use as a JSON request body."""
|
|
1510
|
+
body = {}
|
|
1511
|
+
if self.data_token is not None: body['data_token'] = self.data_token
|
|
1512
|
+
if self.truncated is not None: body['truncated'] = self.truncated
|
|
1513
|
+
return body
|
|
1514
|
+
|
|
1515
|
+
def as_shallow_dict(self) -> dict:
|
|
1516
|
+
"""Serializes the SuccessStatus into a shallow dictionary of its immediate attributes."""
|
|
1517
|
+
body = {}
|
|
1518
|
+
if self.data_token is not None: body['data_token'] = self.data_token
|
|
1519
|
+
if self.truncated is not None: body['truncated'] = self.truncated
|
|
1520
|
+
return body
|
|
1521
|
+
|
|
1522
|
+
@classmethod
|
|
1523
|
+
def from_dict(cls, d: Dict[str, any]) -> SuccessStatus:
|
|
1524
|
+
"""Deserializes the SuccessStatus from a dictionary."""
|
|
1525
|
+
return cls(data_token=d.get('data_token', None), truncated=d.get('truncated', None))
|
|
1526
|
+
|
|
1527
|
+
|
|
1221
1528
|
@dataclass
|
|
1222
1529
|
class TextAttachment:
|
|
1223
1530
|
content: Optional[str] = None
|
|
@@ -1437,6 +1744,33 @@ class GenieAPI:
|
|
|
1437
1744
|
headers=headers)
|
|
1438
1745
|
return GenieGetMessageQueryResultResponse.from_dict(res)
|
|
1439
1746
|
|
|
1747
|
+
def get_message_query_result_by_attachment(self, space_id: str, conversation_id: str, message_id: str,
|
|
1748
|
+
attachment_id: str) -> GenieGetMessageQueryResultResponse:
|
|
1749
|
+
"""Get conversation message SQL query result by attachment id.
|
|
1750
|
+
|
|
1751
|
+
Get the result of SQL query by attachment id This is only available if a message has a query
|
|
1752
|
+
attachment and the message status is `EXECUTING_QUERY`.
|
|
1753
|
+
|
|
1754
|
+
:param space_id: str
|
|
1755
|
+
Genie space ID
|
|
1756
|
+
:param conversation_id: str
|
|
1757
|
+
Conversation ID
|
|
1758
|
+
:param message_id: str
|
|
1759
|
+
Message ID
|
|
1760
|
+
:param attachment_id: str
|
|
1761
|
+
Attachment ID
|
|
1762
|
+
|
|
1763
|
+
:returns: :class:`GenieGetMessageQueryResultResponse`
|
|
1764
|
+
"""
|
|
1765
|
+
|
|
1766
|
+
headers = {'Accept': 'application/json', }
|
|
1767
|
+
|
|
1768
|
+
res = self._api.do(
|
|
1769
|
+
'GET',
|
|
1770
|
+
f'/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/query-result/{attachment_id}',
|
|
1771
|
+
headers=headers)
|
|
1772
|
+
return GenieGetMessageQueryResultResponse.from_dict(res)
|
|
1773
|
+
|
|
1440
1774
|
def start_conversation(self, space_id: str, content: str) -> Wait[GenieMessage]:
|
|
1441
1775
|
"""Start conversation.
|
|
1442
1776
|
|
|
@@ -1907,3 +2241,107 @@ class LakeviewAPI:
|
|
|
1907
2241
|
body=body,
|
|
1908
2242
|
headers=headers)
|
|
1909
2243
|
return Schedule.from_dict(res)
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
class LakeviewEmbeddedAPI:
|
|
2247
|
+
"""Token-based Lakeview APIs for embedding dashboards in external applications."""
|
|
2248
|
+
|
|
2249
|
+
def __init__(self, api_client):
|
|
2250
|
+
self._api = api_client
|
|
2251
|
+
|
|
2252
|
+
def get_published_dashboard_embedded(self, dashboard_id: str):
|
|
2253
|
+
"""Read a published dashboard in an embedded ui.
|
|
2254
|
+
|
|
2255
|
+
Get the current published dashboard within an embedded context.
|
|
2256
|
+
|
|
2257
|
+
:param dashboard_id: str
|
|
2258
|
+
UUID identifying the published dashboard.
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
"""
|
|
2262
|
+
|
|
2263
|
+
headers = {'Accept': 'application/json', }
|
|
2264
|
+
|
|
2265
|
+
self._api.do('GET',
|
|
2266
|
+
f'/api/2.0/lakeview/dashboards/{dashboard_id}/published/embedded',
|
|
2267
|
+
headers=headers)
|
|
2268
|
+
|
|
2269
|
+
|
|
2270
|
+
class QueryExecutionAPI:
|
|
2271
|
+
"""Query execution APIs for AI / BI Dashboards"""
|
|
2272
|
+
|
|
2273
|
+
def __init__(self, api_client):
|
|
2274
|
+
self._api = api_client
|
|
2275
|
+
|
|
2276
|
+
def cancel_published_query_execution(self,
|
|
2277
|
+
dashboard_name: str,
|
|
2278
|
+
dashboard_revision_id: str,
|
|
2279
|
+
*,
|
|
2280
|
+
tokens: Optional[List[str]] = None) -> CancelQueryExecutionResponse:
|
|
2281
|
+
"""Cancel the results for the a query for a published, embedded dashboard.
|
|
2282
|
+
|
|
2283
|
+
:param dashboard_name: str
|
|
2284
|
+
:param dashboard_revision_id: str
|
|
2285
|
+
:param tokens: List[str] (optional)
|
|
2286
|
+
Example: EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ
|
|
2287
|
+
|
|
2288
|
+
:returns: :class:`CancelQueryExecutionResponse`
|
|
2289
|
+
"""
|
|
2290
|
+
|
|
2291
|
+
query = {}
|
|
2292
|
+
if dashboard_name is not None: query['dashboard_name'] = dashboard_name
|
|
2293
|
+
if dashboard_revision_id is not None: query['dashboard_revision_id'] = dashboard_revision_id
|
|
2294
|
+
if tokens is not None: query['tokens'] = [v for v in tokens]
|
|
2295
|
+
headers = {'Accept': 'application/json', }
|
|
2296
|
+
|
|
2297
|
+
res = self._api.do('DELETE', '/api/2.0/lakeview-query/query/published', query=query, headers=headers)
|
|
2298
|
+
return CancelQueryExecutionResponse.from_dict(res)
|
|
2299
|
+
|
|
2300
|
+
def execute_published_dashboard_query(self,
|
|
2301
|
+
dashboard_name: str,
|
|
2302
|
+
dashboard_revision_id: str,
|
|
2303
|
+
*,
|
|
2304
|
+
override_warehouse_id: Optional[str] = None):
|
|
2305
|
+
"""Execute a query for a published dashboard.
|
|
2306
|
+
|
|
2307
|
+
:param dashboard_name: str
|
|
2308
|
+
Dashboard name and revision_id is required to retrieve PublishedDatasetDataModel which contains the
|
|
2309
|
+
list of datasets, warehouse_id, and embedded_credentials
|
|
2310
|
+
:param dashboard_revision_id: str
|
|
2311
|
+
:param override_warehouse_id: str (optional)
|
|
2312
|
+
A dashboard schedule can override the warehouse used as compute for processing the published
|
|
2313
|
+
dashboard queries
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
"""
|
|
2317
|
+
body = {}
|
|
2318
|
+
if dashboard_name is not None: body['dashboard_name'] = dashboard_name
|
|
2319
|
+
if dashboard_revision_id is not None: body['dashboard_revision_id'] = dashboard_revision_id
|
|
2320
|
+
if override_warehouse_id is not None: body['override_warehouse_id'] = override_warehouse_id
|
|
2321
|
+
headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
|
|
2322
|
+
|
|
2323
|
+
self._api.do('POST', '/api/2.0/lakeview-query/query/published', body=body, headers=headers)
|
|
2324
|
+
|
|
2325
|
+
def poll_published_query_status(self,
|
|
2326
|
+
dashboard_name: str,
|
|
2327
|
+
dashboard_revision_id: str,
|
|
2328
|
+
*,
|
|
2329
|
+
tokens: Optional[List[str]] = None) -> PollQueryStatusResponse:
|
|
2330
|
+
"""Poll the results for the a query for a published, embedded dashboard.
|
|
2331
|
+
|
|
2332
|
+
:param dashboard_name: str
|
|
2333
|
+
:param dashboard_revision_id: str
|
|
2334
|
+
:param tokens: List[str] (optional)
|
|
2335
|
+
Example: EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ
|
|
2336
|
+
|
|
2337
|
+
:returns: :class:`PollQueryStatusResponse`
|
|
2338
|
+
"""
|
|
2339
|
+
|
|
2340
|
+
query = {}
|
|
2341
|
+
if dashboard_name is not None: query['dashboard_name'] = dashboard_name
|
|
2342
|
+
if dashboard_revision_id is not None: query['dashboard_revision_id'] = dashboard_revision_id
|
|
2343
|
+
if tokens is not None: query['tokens'] = [v for v in tokens]
|
|
2344
|
+
headers = {'Accept': 'application/json', }
|
|
2345
|
+
|
|
2346
|
+
res = self._api.do('GET', '/api/2.0/lakeview-query/query/published', query=query, headers=headers)
|
|
2347
|
+
return PollQueryStatusResponse.from_dict(res)
|
databricks/sdk/service/jobs.py
CHANGED
|
@@ -4915,6 +4915,10 @@ class RunTask:
|
|
|
4915
4915
|
description: Optional[str] = None
|
|
4916
4916
|
"""An optional description for this task."""
|
|
4917
4917
|
|
|
4918
|
+
disabled: Optional[bool] = None
|
|
4919
|
+
"""Denotes whether or not the task was disabled by the user. Disabled tasks do not execute and are
|
|
4920
|
+
immediately skipped as soon as they are unblocked."""
|
|
4921
|
+
|
|
4918
4922
|
effective_performance_target: Optional[PerformanceTarget] = None
|
|
4919
4923
|
"""effective_performance_target is the actual performance target used by the run during execution.
|
|
4920
4924
|
effective_performance_target can differ from performance_target depending on if the job was
|
|
@@ -5069,6 +5073,7 @@ class RunTask:
|
|
|
5069
5073
|
if self.dbt_task: body['dbt_task'] = self.dbt_task.as_dict()
|
|
5070
5074
|
if self.depends_on: body['depends_on'] = [v.as_dict() for v in self.depends_on]
|
|
5071
5075
|
if self.description is not None: body['description'] = self.description
|
|
5076
|
+
if self.disabled is not None: body['disabled'] = self.disabled
|
|
5072
5077
|
if self.effective_performance_target is not None:
|
|
5073
5078
|
body['effective_performance_target'] = self.effective_performance_target.value
|
|
5074
5079
|
if self.email_notifications: body['email_notifications'] = self.email_notifications.as_dict()
|
|
@@ -5116,6 +5121,7 @@ class RunTask:
|
|
|
5116
5121
|
if self.dbt_task: body['dbt_task'] = self.dbt_task
|
|
5117
5122
|
if self.depends_on: body['depends_on'] = self.depends_on
|
|
5118
5123
|
if self.description is not None: body['description'] = self.description
|
|
5124
|
+
if self.disabled is not None: body['disabled'] = self.disabled
|
|
5119
5125
|
if self.effective_performance_target is not None:
|
|
5120
5126
|
body['effective_performance_target'] = self.effective_performance_target
|
|
5121
5127
|
if self.email_notifications: body['email_notifications'] = self.email_notifications
|
|
@@ -5164,6 +5170,7 @@ class RunTask:
|
|
|
5164
5170
|
dbt_task=_from_dict(d, 'dbt_task', DbtTask),
|
|
5165
5171
|
depends_on=_repeated_dict(d, 'depends_on', TaskDependency),
|
|
5166
5172
|
description=d.get('description', None),
|
|
5173
|
+
disabled=d.get('disabled', None),
|
|
5167
5174
|
effective_performance_target=_enum(d, 'effective_performance_target', PerformanceTarget),
|
|
5168
5175
|
email_notifications=_from_dict(d, 'email_notifications', JobEmailNotifications),
|
|
5169
5176
|
end_time=d.get('end_time', None),
|
|
@@ -1247,7 +1247,7 @@ class ExternalModel:
|
|
|
1247
1247
|
provider: ExternalModelProvider
|
|
1248
1248
|
"""The name of the provider for the external model. Currently, the supported providers are
|
|
1249
1249
|
'ai21labs', 'anthropic', 'amazon-bedrock', 'cohere', 'databricks-model-serving',
|
|
1250
|
-
'google-cloud-vertex-ai', 'openai', and '
|
|
1250
|
+
'google-cloud-vertex-ai', 'openai', 'palm', and 'custom'."""
|
|
1251
1251
|
|
|
1252
1252
|
name: str
|
|
1253
1253
|
"""The name of the external model."""
|