semantic-link-labs 0.12.8__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.
- semantic_link_labs-0.12.8.dist-info/METADATA +354 -0
- semantic_link_labs-0.12.8.dist-info/RECORD +243 -0
- semantic_link_labs-0.12.8.dist-info/WHEEL +5 -0
- semantic_link_labs-0.12.8.dist-info/licenses/LICENSE +21 -0
- semantic_link_labs-0.12.8.dist-info/top_level.txt +1 -0
- sempy_labs/__init__.py +606 -0
- sempy_labs/_a_lib_info.py +2 -0
- sempy_labs/_ai.py +437 -0
- sempy_labs/_authentication.py +264 -0
- sempy_labs/_bpa_translation/_model/_translations_am-ET.po +869 -0
- sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +908 -0
- sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +968 -0
- sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +963 -0
- sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +943 -0
- sempy_labs/_bpa_translation/_model/_translations_da-DK.po +945 -0
- sempy_labs/_bpa_translation/_model/_translations_de-DE.po +988 -0
- sempy_labs/_bpa_translation/_model/_translations_el-GR.po +993 -0
- sempy_labs/_bpa_translation/_model/_translations_es-ES.po +971 -0
- sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +933 -0
- sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +942 -0
- sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +994 -0
- sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +967 -0
- sempy_labs/_bpa_translation/_model/_translations_he-IL.po +902 -0
- sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +944 -0
- sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +963 -0
- sempy_labs/_bpa_translation/_model/_translations_id-ID.po +946 -0
- sempy_labs/_bpa_translation/_model/_translations_is-IS.po +939 -0
- sempy_labs/_bpa_translation/_model/_translations_it-IT.po +986 -0
- sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +846 -0
- sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +839 -0
- sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +967 -0
- sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +978 -0
- sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +962 -0
- sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +962 -0
- sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +957 -0
- sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +968 -0
- sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +964 -0
- sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +952 -0
- sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +950 -0
- sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +942 -0
- sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +976 -0
- sempy_labs/_bpa_translation/_model/_translations_te-IN.po +947 -0
- sempy_labs/_bpa_translation/_model/_translations_th-TH.po +924 -0
- sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +953 -0
- sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +961 -0
- sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +804 -0
- sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +969 -0
- sempy_labs/_capacities.py +1198 -0
- sempy_labs/_capacity_migration.py +660 -0
- sempy_labs/_clear_cache.py +351 -0
- sempy_labs/_connections.py +610 -0
- sempy_labs/_dashboards.py +69 -0
- sempy_labs/_data_access_security.py +98 -0
- sempy_labs/_data_pipelines.py +162 -0
- sempy_labs/_dataflows.py +668 -0
- sempy_labs/_dax.py +501 -0
- sempy_labs/_daxformatter.py +80 -0
- sempy_labs/_delta_analyzer.py +467 -0
- sempy_labs/_delta_analyzer_history.py +301 -0
- sempy_labs/_dictionary_diffs.py +221 -0
- sempy_labs/_documentation.py +147 -0
- sempy_labs/_domains.py +51 -0
- sempy_labs/_eventhouses.py +182 -0
- sempy_labs/_external_data_shares.py +230 -0
- sempy_labs/_gateways.py +521 -0
- sempy_labs/_generate_semantic_model.py +521 -0
- sempy_labs/_get_connection_string.py +84 -0
- sempy_labs/_git.py +543 -0
- sempy_labs/_graphQL.py +90 -0
- sempy_labs/_helper_functions.py +2833 -0
- sempy_labs/_icons.py +149 -0
- sempy_labs/_job_scheduler.py +609 -0
- sempy_labs/_kql_databases.py +149 -0
- sempy_labs/_kql_querysets.py +124 -0
- sempy_labs/_kusto.py +137 -0
- sempy_labs/_labels.py +124 -0
- sempy_labs/_list_functions.py +1720 -0
- sempy_labs/_managed_private_endpoints.py +253 -0
- sempy_labs/_mirrored_databases.py +416 -0
- sempy_labs/_mirrored_warehouses.py +60 -0
- sempy_labs/_ml_experiments.py +113 -0
- sempy_labs/_model_auto_build.py +140 -0
- sempy_labs/_model_bpa.py +557 -0
- sempy_labs/_model_bpa_bulk.py +378 -0
- sempy_labs/_model_bpa_rules.py +859 -0
- sempy_labs/_model_dependencies.py +343 -0
- sempy_labs/_mounted_data_factories.py +123 -0
- sempy_labs/_notebooks.py +441 -0
- sempy_labs/_one_lake_integration.py +151 -0
- sempy_labs/_onelake.py +131 -0
- sempy_labs/_query_scale_out.py +433 -0
- sempy_labs/_refresh_semantic_model.py +435 -0
- sempy_labs/_semantic_models.py +468 -0
- sempy_labs/_spark.py +455 -0
- sempy_labs/_sql.py +241 -0
- sempy_labs/_sql_audit_settings.py +207 -0
- sempy_labs/_sql_endpoints.py +214 -0
- sempy_labs/_tags.py +201 -0
- sempy_labs/_translations.py +43 -0
- sempy_labs/_user_delegation_key.py +44 -0
- sempy_labs/_utils.py +79 -0
- sempy_labs/_vertipaq.py +1021 -0
- sempy_labs/_vpax.py +388 -0
- sempy_labs/_warehouses.py +234 -0
- sempy_labs/_workloads.py +140 -0
- sempy_labs/_workspace_identity.py +72 -0
- sempy_labs/_workspaces.py +595 -0
- sempy_labs/admin/__init__.py +170 -0
- sempy_labs/admin/_activities.py +167 -0
- sempy_labs/admin/_apps.py +145 -0
- sempy_labs/admin/_artifacts.py +65 -0
- sempy_labs/admin/_basic_functions.py +463 -0
- sempy_labs/admin/_capacities.py +508 -0
- sempy_labs/admin/_dataflows.py +45 -0
- sempy_labs/admin/_datasets.py +186 -0
- sempy_labs/admin/_domains.py +522 -0
- sempy_labs/admin/_external_data_share.py +100 -0
- sempy_labs/admin/_git.py +72 -0
- sempy_labs/admin/_items.py +265 -0
- sempy_labs/admin/_labels.py +211 -0
- sempy_labs/admin/_reports.py +241 -0
- sempy_labs/admin/_scanner.py +118 -0
- sempy_labs/admin/_shared.py +82 -0
- sempy_labs/admin/_sharing_links.py +110 -0
- sempy_labs/admin/_tags.py +131 -0
- sempy_labs/admin/_tenant.py +503 -0
- sempy_labs/admin/_tenant_keys.py +89 -0
- sempy_labs/admin/_users.py +140 -0
- sempy_labs/admin/_workspaces.py +236 -0
- sempy_labs/deployment_pipeline/__init__.py +23 -0
- sempy_labs/deployment_pipeline/_items.py +580 -0
- sempy_labs/directlake/__init__.py +57 -0
- sempy_labs/directlake/_autosync.py +58 -0
- sempy_labs/directlake/_directlake_schema_compare.py +120 -0
- sempy_labs/directlake/_directlake_schema_sync.py +161 -0
- sempy_labs/directlake/_dl_helper.py +274 -0
- sempy_labs/directlake/_generate_shared_expression.py +94 -0
- sempy_labs/directlake/_get_directlake_lakehouse.py +62 -0
- sempy_labs/directlake/_get_shared_expression.py +34 -0
- sempy_labs/directlake/_guardrails.py +96 -0
- sempy_labs/directlake/_list_directlake_model_calc_tables.py +70 -0
- sempy_labs/directlake/_show_unsupported_directlake_objects.py +90 -0
- sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +239 -0
- sempy_labs/directlake/_update_directlake_partition_entity.py +259 -0
- sempy_labs/directlake/_warm_cache.py +236 -0
- sempy_labs/dotnet_lib/dotnet.runtime.config.json +10 -0
- sempy_labs/environment/__init__.py +23 -0
- sempy_labs/environment/_items.py +212 -0
- sempy_labs/environment/_pubstage.py +223 -0
- sempy_labs/eventstream/__init__.py +37 -0
- sempy_labs/eventstream/_items.py +263 -0
- sempy_labs/eventstream/_topology.py +652 -0
- sempy_labs/graph/__init__.py +59 -0
- sempy_labs/graph/_groups.py +651 -0
- sempy_labs/graph/_sensitivity_labels.py +120 -0
- sempy_labs/graph/_teams.py +125 -0
- sempy_labs/graph/_user_licenses.py +96 -0
- sempy_labs/graph/_users.py +516 -0
- sempy_labs/graph_model/__init__.py +15 -0
- sempy_labs/graph_model/_background_jobs.py +63 -0
- sempy_labs/graph_model/_items.py +149 -0
- sempy_labs/lakehouse/__init__.py +67 -0
- sempy_labs/lakehouse/_blobs.py +247 -0
- sempy_labs/lakehouse/_get_lakehouse_columns.py +102 -0
- sempy_labs/lakehouse/_get_lakehouse_tables.py +274 -0
- sempy_labs/lakehouse/_helper.py +250 -0
- sempy_labs/lakehouse/_lakehouse.py +351 -0
- sempy_labs/lakehouse/_livy_sessions.py +143 -0
- sempy_labs/lakehouse/_materialized_lake_views.py +157 -0
- sempy_labs/lakehouse/_partitioning.py +165 -0
- sempy_labs/lakehouse/_schemas.py +217 -0
- sempy_labs/lakehouse/_shortcuts.py +440 -0
- sempy_labs/migration/__init__.py +35 -0
- sempy_labs/migration/_create_pqt_file.py +238 -0
- sempy_labs/migration/_direct_lake_to_import.py +105 -0
- sempy_labs/migration/_migrate_calctables_to_lakehouse.py +398 -0
- sempy_labs/migration/_migrate_calctables_to_semantic_model.py +148 -0
- sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +533 -0
- sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +172 -0
- sempy_labs/migration/_migration_validation.py +71 -0
- sempy_labs/migration/_refresh_calc_tables.py +131 -0
- sempy_labs/mirrored_azure_databricks_catalog/__init__.py +15 -0
- sempy_labs/mirrored_azure_databricks_catalog/_discover.py +213 -0
- sempy_labs/mirrored_azure_databricks_catalog/_refresh_catalog_metadata.py +45 -0
- sempy_labs/ml_model/__init__.py +23 -0
- sempy_labs/ml_model/_functions.py +427 -0
- sempy_labs/report/_BPAReportTemplate.json +232 -0
- sempy_labs/report/__init__.py +55 -0
- sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +9 -0
- sempy_labs/report/_bpareporttemplate/.platform +11 -0
- sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +710 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +11 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +191 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +438 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +127 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +576 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +207 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +506 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +127 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +513 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +8 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +112 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +11 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +513 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +352 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +37 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +542 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +221 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +127 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +576 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +127 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +9 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +38 -0
- sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +10 -0
- sempy_labs/report/_bpareporttemplate/definition/report.json +176 -0
- sempy_labs/report/_bpareporttemplate/definition/version.json +4 -0
- sempy_labs/report/_bpareporttemplate/definition.pbir +14 -0
- sempy_labs/report/_download_report.py +76 -0
- sempy_labs/report/_export_report.py +257 -0
- sempy_labs/report/_generate_report.py +427 -0
- sempy_labs/report/_paginated.py +76 -0
- sempy_labs/report/_report_bpa.py +354 -0
- sempy_labs/report/_report_bpa_rules.py +115 -0
- sempy_labs/report/_report_functions.py +581 -0
- sempy_labs/report/_report_helper.py +227 -0
- sempy_labs/report/_report_list_functions.py +110 -0
- sempy_labs/report/_report_rebind.py +149 -0
- sempy_labs/report/_reportwrapper.py +3100 -0
- sempy_labs/report/_save_report.py +147 -0
- sempy_labs/snowflake_database/__init__.py +10 -0
- sempy_labs/snowflake_database/_items.py +105 -0
- sempy_labs/sql_database/__init__.py +21 -0
- sempy_labs/sql_database/_items.py +201 -0
- sempy_labs/sql_database/_mirroring.py +79 -0
- sempy_labs/theme/__init__.py +12 -0
- sempy_labs/theme/_org_themes.py +129 -0
- sempy_labs/tom/__init__.py +3 -0
- sempy_labs/tom/_model.py +5977 -0
- sempy_labs/variable_library/__init__.py +19 -0
- sempy_labs/variable_library/_functions.py +403 -0
- sempy_labs/warehouse/__init__.py +28 -0
- sempy_labs/warehouse/_items.py +234 -0
- sempy_labs/warehouse/_restore_points.py +309 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
from sempy_labs._helper_functions import (
|
|
2
|
+
resolve_item_id,
|
|
3
|
+
resolve_item_name_and_id,
|
|
4
|
+
resolve_workspace_id,
|
|
5
|
+
_base_api,
|
|
6
|
+
_create_dataframe,
|
|
7
|
+
_update_dataframe_datatypes,
|
|
8
|
+
resolve_workspace_name_and_id,
|
|
9
|
+
)
|
|
10
|
+
import pandas as pd
|
|
11
|
+
from typing import Optional
|
|
12
|
+
from uuid import UUID
|
|
13
|
+
from sempy._utils._log import log
|
|
14
|
+
import sempy_labs._icons as icons
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@log
|
|
18
|
+
def list_restore_points(
|
|
19
|
+
warehouse: str | UUID, workspace: Optional[str | UUID] = None
|
|
20
|
+
) -> pd.DataFrame:
|
|
21
|
+
"""
|
|
22
|
+
Returns all restore points for a warehouse.
|
|
23
|
+
|
|
24
|
+
This is a wrapper function for the following API: `Restore Points - List Restore Points <https://learn.microsoft.com/rest/api/fabric/warehouse/restore-points/list-restore-points>`_.
|
|
25
|
+
|
|
26
|
+
Parameters
|
|
27
|
+
----------
|
|
28
|
+
warehouse : str | uuid.UUID
|
|
29
|
+
The Fabric warehouse name or ID.
|
|
30
|
+
workspace : str | uuid.UUID, default=None
|
|
31
|
+
The Fabric workspace name or ID.
|
|
32
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
33
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
34
|
+
|
|
35
|
+
Returns
|
|
36
|
+
-------
|
|
37
|
+
pandas.DataFrame
|
|
38
|
+
A pandas dataframe showing all restore points for a warehouse.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
workspace_id = resolve_workspace_id(workspace)
|
|
42
|
+
warehouse_id = resolve_item_id(
|
|
43
|
+
item=warehouse, type="warehouse", workspace=workspace_id
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
columns = {
|
|
47
|
+
"Restore Point Id": "string",
|
|
48
|
+
"Restore Point Name": "string",
|
|
49
|
+
"Description": "string",
|
|
50
|
+
"Creation Mode": "string",
|
|
51
|
+
"Event DateTime": "datetime",
|
|
52
|
+
"Event Initiator Id": "string",
|
|
53
|
+
"Event Initiator Display Name": "string",
|
|
54
|
+
"Event Initiator Type": "string",
|
|
55
|
+
"Event Initiator User Principal Name": "string",
|
|
56
|
+
}
|
|
57
|
+
df = _create_dataframe(columns=columns)
|
|
58
|
+
responses = _base_api(
|
|
59
|
+
request=f"/v1/workspaces/{workspace_id}/warehouses/{warehouse_id}/restorePoints",
|
|
60
|
+
uses_pagination=True,
|
|
61
|
+
client="fabric_sp",
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
rows = []
|
|
65
|
+
for r in responses:
|
|
66
|
+
for v in r.get("values", []):
|
|
67
|
+
cd = v.get("creationDetails", {})
|
|
68
|
+
event_initiator = cd.get("eventInitiator", {})
|
|
69
|
+
rows.append(
|
|
70
|
+
{
|
|
71
|
+
"Restore Point Id": v.get("id"),
|
|
72
|
+
"Restore Point Name": v.get("displayName"),
|
|
73
|
+
"Description": v.get("description"),
|
|
74
|
+
"Creation Mode": v.get("creationMode"),
|
|
75
|
+
"Event DateTime": cd.get("eventDateTime"),
|
|
76
|
+
"Event Initiator Id": event_initiator.get("id"),
|
|
77
|
+
"Event Initiator Display Name": event_initiator.get("displayName"),
|
|
78
|
+
"Event Initiator Type": event_initiator.get("type"),
|
|
79
|
+
"Event Initiator User Principal Name": event_initiator.get(
|
|
80
|
+
"userDetails", {}
|
|
81
|
+
).get("userPrincipalName"),
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
if rows:
|
|
86
|
+
df = pd.DataFrame(rows, columns=list(columns.keys()))
|
|
87
|
+
_update_dataframe_datatypes(df=df, columns=columns)
|
|
88
|
+
|
|
89
|
+
return df
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _resolve_restore_point_id(
|
|
93
|
+
warehouse_id: UUID, restore_point: str | UUID, workspace_id: UUID
|
|
94
|
+
) -> str:
|
|
95
|
+
|
|
96
|
+
df = list_restore_points(warehouse=warehouse_id, workspace=workspace_id)
|
|
97
|
+
df_filt = df[
|
|
98
|
+
(df["Restore Point Id"] == restore_point)
|
|
99
|
+
| (df["Restore Point Name"] == restore_point)
|
|
100
|
+
]
|
|
101
|
+
|
|
102
|
+
if df_filt.empty:
|
|
103
|
+
raise ValueError(
|
|
104
|
+
f"Restore Point '{restore_point}' not found in the '{warehouse_id}' warehouse within the '{workspace_id}' workspace."
|
|
105
|
+
)
|
|
106
|
+
return df_filt["Restore Point Id"].iloc[0]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@log
|
|
110
|
+
def delete_restore_point(
|
|
111
|
+
warehouse: str | UUID,
|
|
112
|
+
restore_point: str | UUID,
|
|
113
|
+
workspace: Optional[str | UUID] = None,
|
|
114
|
+
):
|
|
115
|
+
"""
|
|
116
|
+
Deletes a restore point from a warehouse.
|
|
117
|
+
|
|
118
|
+
This is a wrapper function for the following API: `Restore Points - Delete Restore Point <https://learn.microsoft.com/rest/api/fabric/warehouse/restore-points/delete-restore-point>`_.
|
|
119
|
+
|
|
120
|
+
Parameters
|
|
121
|
+
----------
|
|
122
|
+
warehouse : str | uuid.UUID
|
|
123
|
+
The Fabric warehouse name or ID.
|
|
124
|
+
restore_point : str | uuid.UUID
|
|
125
|
+
The restore point name or ID.
|
|
126
|
+
workspace : str | uuid.UUID, default=None
|
|
127
|
+
The Fabric workspace name or ID.
|
|
128
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
129
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
133
|
+
(warehouse_name, warehouse_id) = resolve_item_name_and_id(
|
|
134
|
+
item=warehouse, type="Warehouse", workspace=workspace_id
|
|
135
|
+
)
|
|
136
|
+
restore_point_id = _resolve_restore_point_id(
|
|
137
|
+
warehouse_id=warehouse_id,
|
|
138
|
+
restore_point=restore_point,
|
|
139
|
+
workspace_id=workspace_id,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
_base_api(
|
|
143
|
+
request=f"/v1/workspaces/{workspace_id}/warehouses/{warehouse_id}/restorePoints/{restore_point_id}",
|
|
144
|
+
method="delete",
|
|
145
|
+
client="fabric_sp",
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
print(
|
|
149
|
+
f"{icons.green_dot} The restore point '{restore_point}' has been deleted from the '{warehouse_name}' warehouse within the '{workspace_name}' workspace."
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
@log
|
|
154
|
+
def create_restore_point(
|
|
155
|
+
warehouse: str | UUID,
|
|
156
|
+
name: str,
|
|
157
|
+
description: Optional[str] = None,
|
|
158
|
+
workspace: Optional[str | UUID] = None,
|
|
159
|
+
):
|
|
160
|
+
"""
|
|
161
|
+
Creates a restore point in a warehouse.
|
|
162
|
+
|
|
163
|
+
This is a wrapper function for the following API: `Restore Points - Create Restore Point <https://learn.microsoft.com/rest/api/fabric/warehouse/restore-points/create-restore-point>`_.
|
|
164
|
+
|
|
165
|
+
Parameters
|
|
166
|
+
----------
|
|
167
|
+
warehouse : str | uuid.UUID
|
|
168
|
+
The Fabric warehouse name or ID.
|
|
169
|
+
name : str
|
|
170
|
+
The name of the restore point.
|
|
171
|
+
description : str, default=None
|
|
172
|
+
The description of the restore point.
|
|
173
|
+
workspace : str | uuid.UUID, default=None
|
|
174
|
+
The Fabric workspace name or ID.
|
|
175
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
176
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
180
|
+
(warehouse_name, warehouse_id) = resolve_item_name_and_id(
|
|
181
|
+
item=warehouse, type="Warehouse", workspace=workspace_id
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
payload = {"displayName": name}
|
|
185
|
+
|
|
186
|
+
if description:
|
|
187
|
+
payload["description"] = description
|
|
188
|
+
|
|
189
|
+
_base_api(
|
|
190
|
+
request=f"/v1/workspaces/{workspace_id}/warehouses/{warehouse_id}/restorePoints",
|
|
191
|
+
method="post",
|
|
192
|
+
client="fabric_sp",
|
|
193
|
+
payload=payload,
|
|
194
|
+
lro_return_status_code=True,
|
|
195
|
+
status_codes=[201, 202],
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
print(
|
|
199
|
+
f"{icons.green_dot} The restore point '{name}' has been created in the '{warehouse_name}' warehouse within the '{workspace_name}' workspace."
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
@log
|
|
204
|
+
def update_restore_point(
|
|
205
|
+
warehouse: str | UUID,
|
|
206
|
+
restore_point: str | UUID,
|
|
207
|
+
name: Optional[str] = None,
|
|
208
|
+
description: Optional[str] = None,
|
|
209
|
+
workspace: Optional[str | UUID] = None,
|
|
210
|
+
):
|
|
211
|
+
"""
|
|
212
|
+
Updates a restore point in a warehouse.
|
|
213
|
+
|
|
214
|
+
This is a wrapper function for the following API: `Restore Points - Update Restore Point <https://learn.microsoft.com/rest/api/fabric/warehouse/restore-points/update-restore-point>`_.
|
|
215
|
+
|
|
216
|
+
Parameters
|
|
217
|
+
----------
|
|
218
|
+
warehouse : str | uuid.UUID
|
|
219
|
+
The Fabric warehouse name or ID.
|
|
220
|
+
restore_point : str | uuid.UUID
|
|
221
|
+
The restore point name or ID.
|
|
222
|
+
name : str, default=None
|
|
223
|
+
The new name of the restore point.
|
|
224
|
+
description : str, default=None
|
|
225
|
+
The new description of the restore point.
|
|
226
|
+
workspace : str | uuid.UUID, default=None
|
|
227
|
+
The Fabric workspace name or ID.
|
|
228
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
229
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
230
|
+
"""
|
|
231
|
+
|
|
232
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
233
|
+
(warehouse_name, warehouse_id) = resolve_item_name_and_id(
|
|
234
|
+
item=warehouse, type="Warehouse", workspace=workspace_id
|
|
235
|
+
)
|
|
236
|
+
restore_point_id = _resolve_restore_point_id(
|
|
237
|
+
warehouse_id=warehouse_id,
|
|
238
|
+
restore_point=restore_point,
|
|
239
|
+
workspace_id=workspace_id,
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
payload = {}
|
|
243
|
+
if name:
|
|
244
|
+
payload["displayName"] = name
|
|
245
|
+
if description:
|
|
246
|
+
payload["description"] = description
|
|
247
|
+
|
|
248
|
+
if not payload:
|
|
249
|
+
print(
|
|
250
|
+
f"{icons.yellow_dot} No updates provided for the restore point '{restore_point}'."
|
|
251
|
+
)
|
|
252
|
+
return
|
|
253
|
+
|
|
254
|
+
_base_api(
|
|
255
|
+
request=f"/v1/workspaces/{workspace_id}/warehouses/{warehouse_id}/restorePoints/{restore_point_id}",
|
|
256
|
+
method="patch",
|
|
257
|
+
client="fabric_sp",
|
|
258
|
+
payload=payload,
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
print(
|
|
262
|
+
f"{icons.green_dot} The restore point '{restore_point}' has been updated in the '{warehouse_name}' warehouse within the '{workspace_name}' workspace."
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
@log
|
|
267
|
+
def restore_to_restore_point(
|
|
268
|
+
warehouse: str | UUID,
|
|
269
|
+
restore_point: str | UUID,
|
|
270
|
+
workspace: Optional[str | UUID] = None,
|
|
271
|
+
):
|
|
272
|
+
"""
|
|
273
|
+
Restores a warehouse in-place to the restore point specified.
|
|
274
|
+
|
|
275
|
+
This is a wrapper function for the following API: `Restore Points - Restore To Restore Point <https://learn.microsoft.com/rest/api/fabric/warehouse/restore-points/restore-to-restore-point>`_.
|
|
276
|
+
|
|
277
|
+
Parameters
|
|
278
|
+
----------
|
|
279
|
+
warehouse : str | uuid.UUID
|
|
280
|
+
The Fabric warehouse name or ID.
|
|
281
|
+
restore_point : str | uuid.UUID
|
|
282
|
+
The restore point name or ID.
|
|
283
|
+
workspace : str | uuid.UUID, default=None
|
|
284
|
+
The Fabric workspace name or ID.
|
|
285
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
286
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
287
|
+
"""
|
|
288
|
+
|
|
289
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
290
|
+
(warehouse_name, warehouse_id) = resolve_item_name_and_id(
|
|
291
|
+
item=warehouse, type="Warehouse", workspace=workspace_id
|
|
292
|
+
)
|
|
293
|
+
restore_point_id = _resolve_restore_point_id(
|
|
294
|
+
warehouse_id=warehouse_id,
|
|
295
|
+
restore_point=restore_point,
|
|
296
|
+
workspace_id=workspace_id,
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
_base_api(
|
|
300
|
+
request=f"/v1/workspaces/{workspace_id}/warehouses/{warehouse_id}/restorePoints/{restore_point_id}/restore",
|
|
301
|
+
method="post",
|
|
302
|
+
client="fabric_sp",
|
|
303
|
+
lro_return_status_code=True,
|
|
304
|
+
status_codes=[200, 202],
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
print(
|
|
308
|
+
f"{icons.green_dot} The warehouse '{warehouse_name}' is being restored to the restore point '{restore_point}' within the '{workspace_name}' workspace."
|
|
309
|
+
)
|