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,60 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from typing import Optional
|
|
3
|
+
from sempy_labs._helper_functions import (
|
|
4
|
+
resolve_workspace_id,
|
|
5
|
+
_base_api,
|
|
6
|
+
_create_dataframe,
|
|
7
|
+
)
|
|
8
|
+
from uuid import UUID
|
|
9
|
+
from sempy._utils._log import log
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@log
|
|
13
|
+
def list_mirrored_warehouses(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
|
|
14
|
+
"""
|
|
15
|
+
Shows the mirrored warehouses within a workspace.
|
|
16
|
+
|
|
17
|
+
This is a wrapper function for the following API: `Items - List Mirrored Warehouses <https://learn.microsoft.com/rest/api/fabric/mirroredwarehouse/items/list-mirrored-warehouses>`_.
|
|
18
|
+
|
|
19
|
+
Parameters
|
|
20
|
+
----------
|
|
21
|
+
workspace : str | uuid.UUID, default=None
|
|
22
|
+
The Fabric workspace name or ID.
|
|
23
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
24
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
25
|
+
|
|
26
|
+
Returns
|
|
27
|
+
-------
|
|
28
|
+
pandas.DataFrame
|
|
29
|
+
A pandas dataframe showing the mirrored warehouses within a workspace.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
columns = {
|
|
33
|
+
"Mirrored Warehouse Name": "string",
|
|
34
|
+
"Mirrored Warehouse Id": "string",
|
|
35
|
+
"Description": "string",
|
|
36
|
+
}
|
|
37
|
+
df = _create_dataframe(columns=columns)
|
|
38
|
+
|
|
39
|
+
workspace_id = resolve_workspace_id(workspace)
|
|
40
|
+
responses = _base_api(
|
|
41
|
+
request=f"/v1/workspaces/{workspace_id}/mirroredWarehouses",
|
|
42
|
+
status_codes=200,
|
|
43
|
+
uses_pagination=True,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
rows = []
|
|
47
|
+
for r in responses:
|
|
48
|
+
for v in r.get("value", []):
|
|
49
|
+
rows.append(
|
|
50
|
+
{
|
|
51
|
+
"Mirrored Warehouse Name": v.get("displayName"),
|
|
52
|
+
"Mirrored Warehouse Id": v.get("id"),
|
|
53
|
+
"Description": v.get("description"),
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
if rows:
|
|
58
|
+
df = pd.DataFrame(rows, columns=list(columns.keys()))
|
|
59
|
+
|
|
60
|
+
return df
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from typing import Optional
|
|
3
|
+
from sempy_labs._helper_functions import (
|
|
4
|
+
resolve_workspace_id,
|
|
5
|
+
_base_api,
|
|
6
|
+
delete_item,
|
|
7
|
+
_create_dataframe,
|
|
8
|
+
create_item,
|
|
9
|
+
)
|
|
10
|
+
from uuid import UUID
|
|
11
|
+
from sempy._utils._log import log
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@log
|
|
15
|
+
def list_ml_experiments(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
|
|
16
|
+
"""
|
|
17
|
+
Shows the ML experiments within a workspace.
|
|
18
|
+
|
|
19
|
+
This is a wrapper function for the following API: `Items - List ML Experiments <https://learn.microsoft.com/rest/api/fabric/mlexperiment/items/list-ml-experiments>`_.
|
|
20
|
+
|
|
21
|
+
Parameters
|
|
22
|
+
----------
|
|
23
|
+
workspace : str | uuid.UUID, default=None
|
|
24
|
+
The Fabric workspace name or ID.
|
|
25
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
26
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
27
|
+
|
|
28
|
+
Returns
|
|
29
|
+
-------
|
|
30
|
+
pandas.DataFrame
|
|
31
|
+
A pandas dataframe showing the ML models within a workspace.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
columns = {
|
|
35
|
+
"ML Experiment Name": "string",
|
|
36
|
+
"ML Experiment Id": "string",
|
|
37
|
+
"Description": "string",
|
|
38
|
+
}
|
|
39
|
+
df = _create_dataframe(columns=columns)
|
|
40
|
+
|
|
41
|
+
workspace_id = resolve_workspace_id(workspace)
|
|
42
|
+
|
|
43
|
+
responses = _base_api(
|
|
44
|
+
request=f"/v1/workspaces/{workspace_id}/mlExperiments",
|
|
45
|
+
status_codes=200,
|
|
46
|
+
uses_pagination=True,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
rows = []
|
|
50
|
+
for r in responses:
|
|
51
|
+
for v in r.get("value", []):
|
|
52
|
+
model_id = v.get("id")
|
|
53
|
+
modelName = v.get("displayName")
|
|
54
|
+
desc = v.get("description")
|
|
55
|
+
|
|
56
|
+
rows.append(
|
|
57
|
+
{
|
|
58
|
+
"ML Experiment Name": modelName,
|
|
59
|
+
"ML Experiment Id": model_id,
|
|
60
|
+
"Description": desc,
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if rows:
|
|
65
|
+
df = pd.DataFrame(rows, columns=list(columns.keys()))
|
|
66
|
+
|
|
67
|
+
return df
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@log
|
|
71
|
+
def create_ml_experiment(
|
|
72
|
+
name: str, description: Optional[str] = None, workspace: Optional[str | UUID] = None
|
|
73
|
+
):
|
|
74
|
+
"""
|
|
75
|
+
Creates a Fabric ML experiment.
|
|
76
|
+
|
|
77
|
+
This is a wrapper function for the following API: `Items - Create ML Experiment <https://learn.microsoft.com/rest/api/fabric/mlexperiment/items/create-ml-experiment>`_.
|
|
78
|
+
|
|
79
|
+
Parameters
|
|
80
|
+
----------
|
|
81
|
+
name: str
|
|
82
|
+
Name of the ML experiment.
|
|
83
|
+
description : str, default=None
|
|
84
|
+
A description of the ML experiment.
|
|
85
|
+
workspace : str | uuid.UUID, default=None
|
|
86
|
+
The Fabric workspace name or ID.
|
|
87
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
88
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
create_item(
|
|
92
|
+
name=name, description=description, type="MLExperiment", workspace=workspace
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
@log
|
|
97
|
+
def delete_ml_experiment(name: str, workspace: Optional[str | UUID] = None):
|
|
98
|
+
"""
|
|
99
|
+
Deletes a Fabric ML experiment.
|
|
100
|
+
|
|
101
|
+
This is a wrapper function for the following API: `Items - Delete ML Experiment <https://learn.microsoft.com/rest/api/fabric/mlexperiment/items/delete-ml-experiment>`_.
|
|
102
|
+
|
|
103
|
+
Parameters
|
|
104
|
+
----------
|
|
105
|
+
name: str
|
|
106
|
+
Name of the ML experiment.
|
|
107
|
+
workspace : str | uuid.UUID, default=None
|
|
108
|
+
The Fabric workspace name or ID.
|
|
109
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
110
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
delete_item(item=name, type="MLExperiment", workspace=workspace)
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import sempy.fabric as fabric
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from sempy_labs.tom import connect_semantic_model
|
|
4
|
+
from sempy_labs._generate_semantic_model import create_blank_semantic_model
|
|
5
|
+
from sempy_labs.directlake._generate_shared_expression import generate_shared_expression
|
|
6
|
+
from typing import Optional
|
|
7
|
+
from sempy._utils._log import log
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@log
|
|
11
|
+
def model_auto_build(
|
|
12
|
+
dataset: str,
|
|
13
|
+
file_path: str,
|
|
14
|
+
workspace: Optional[str] = None,
|
|
15
|
+
lakehouse: Optional[str] = None,
|
|
16
|
+
lakehouse_workspace: Optional[str] = None,
|
|
17
|
+
):
|
|
18
|
+
"""
|
|
19
|
+
Dynamically generates a semantic model based on an Excel file template.
|
|
20
|
+
|
|
21
|
+
Parameters
|
|
22
|
+
----------
|
|
23
|
+
dataset : str
|
|
24
|
+
Name of the semantic model.
|
|
25
|
+
file_path : str
|
|
26
|
+
workspace : str, default=None
|
|
27
|
+
The Fabric workspace name.
|
|
28
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
29
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
30
|
+
lakehouse : str, default=None
|
|
31
|
+
The Fabric lakehouse used by the Direct Lake semantic model.
|
|
32
|
+
Defaults to None which resolves to the lakehouse attached to the notebook.
|
|
33
|
+
lakehouse_workspace : str, default=None
|
|
34
|
+
The Fabric workspace used by the lakehouse.
|
|
35
|
+
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
36
|
+
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
workspace = fabric.resolve_workspace_name(workspace)
|
|
40
|
+
|
|
41
|
+
if lakehouse_workspace is None:
|
|
42
|
+
lakehouse_workspace = workspace
|
|
43
|
+
|
|
44
|
+
sheets = [
|
|
45
|
+
"Model",
|
|
46
|
+
"Tables",
|
|
47
|
+
"Measures",
|
|
48
|
+
"Columns",
|
|
49
|
+
"Roles",
|
|
50
|
+
"Hierarchies",
|
|
51
|
+
"Relationships",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
create_blank_semantic_model(dataset=dataset, workspace=workspace)
|
|
55
|
+
|
|
56
|
+
with connect_semantic_model(
|
|
57
|
+
dataset=dataset, workspace=workspace, readonly=False
|
|
58
|
+
) as tom:
|
|
59
|
+
|
|
60
|
+
# DL Only
|
|
61
|
+
expr = generate_shared_expression(
|
|
62
|
+
item_name=lakehouse, item_type="Lakehouse", workspace=lakehouse_workspace
|
|
63
|
+
)
|
|
64
|
+
tom.add_expression(name="DatbaseQuery", expression=expr)
|
|
65
|
+
|
|
66
|
+
for sheet in sheets:
|
|
67
|
+
df = pd.read_excel(file_path, sheet_name=sheet)
|
|
68
|
+
|
|
69
|
+
if sheet == "Tables":
|
|
70
|
+
for i, r in df.iterrows():
|
|
71
|
+
tName = r["Table Name"]
|
|
72
|
+
desc = r["Description"]
|
|
73
|
+
dc = r["Data Category"]
|
|
74
|
+
mode = r["Mode"]
|
|
75
|
+
hidden = bool(r["Hidden"])
|
|
76
|
+
|
|
77
|
+
tom.add_table(
|
|
78
|
+
name=tName, description=desc, data_category=dc, hidden=hidden
|
|
79
|
+
)
|
|
80
|
+
if mode == "DirectLake":
|
|
81
|
+
tom.add_entity_partition(table_name=tName, entity_name=tName)
|
|
82
|
+
elif sheet == "Columns":
|
|
83
|
+
for i, r in df.iterrows():
|
|
84
|
+
tName = r["Table Name"]
|
|
85
|
+
cName = r["Column Name"]
|
|
86
|
+
scName = r["Source Column"]
|
|
87
|
+
dataType = r["Data Type"]
|
|
88
|
+
hidden = bool(r["Hidden"])
|
|
89
|
+
key = bool(r["Key"])
|
|
90
|
+
if dataType == "Integer":
|
|
91
|
+
dataType = "Int64"
|
|
92
|
+
desc = r["Description"]
|
|
93
|
+
|
|
94
|
+
tom.add_data_column(
|
|
95
|
+
table_name=tName,
|
|
96
|
+
column_name=cName,
|
|
97
|
+
source_column=scName,
|
|
98
|
+
data_type=dataType,
|
|
99
|
+
description=desc,
|
|
100
|
+
hidden=hidden,
|
|
101
|
+
key=key,
|
|
102
|
+
)
|
|
103
|
+
elif sheet == "Measures":
|
|
104
|
+
for i, r in df.iterrows():
|
|
105
|
+
tName = r["Table Name"]
|
|
106
|
+
mName = r["Measure Name"]
|
|
107
|
+
expr = r["Expression"]
|
|
108
|
+
desc = r["Description"]
|
|
109
|
+
format = r["Format String"]
|
|
110
|
+
hidden = bool(r["Hidden"])
|
|
111
|
+
|
|
112
|
+
tom.add_measure(
|
|
113
|
+
table_name=tName,
|
|
114
|
+
measure_name=mName,
|
|
115
|
+
expression=expr,
|
|
116
|
+
format_string=format,
|
|
117
|
+
description=desc,
|
|
118
|
+
hidden=hidden,
|
|
119
|
+
)
|
|
120
|
+
elif sheet == "Relationships":
|
|
121
|
+
for i, r in df.iterrows():
|
|
122
|
+
fromTable = r["From Table"]
|
|
123
|
+
fromColumn = r["From Column"]
|
|
124
|
+
toTable = r["To Table"]
|
|
125
|
+
toColumn = r["To Column"]
|
|
126
|
+
fromCard = r["From Cardinality"]
|
|
127
|
+
toCard = r["To Cardinality"]
|
|
128
|
+
|
|
129
|
+
tom.add_relationship(
|
|
130
|
+
from_table=fromTable,
|
|
131
|
+
from_column=fromColumn,
|
|
132
|
+
to_table=toTable,
|
|
133
|
+
to_column=toColumn,
|
|
134
|
+
from_cardinality=fromCard,
|
|
135
|
+
to_cardinality=toCard,
|
|
136
|
+
)
|
|
137
|
+
elif sheet == "Roles":
|
|
138
|
+
print("hi")
|
|
139
|
+
elif sheet == "Hierarchies":
|
|
140
|
+
print("hi")
|