semantic-link-labs 0.9.9__py3-none-any.whl → 0.9.10__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 semantic-link-labs might be problematic. Click here for more details.
- {semantic_link_labs-0.9.9.dist-info → semantic_link_labs-0.9.10.dist-info}/METADATA +5 -3
- {semantic_link_labs-0.9.9.dist-info → semantic_link_labs-0.9.10.dist-info}/RECORD +29 -27
- {semantic_link_labs-0.9.9.dist-info → semantic_link_labs-0.9.10.dist-info}/WHEEL +1 -1
- sempy_labs/__init__.py +6 -0
- sempy_labs/_clear_cache.py +12 -0
- sempy_labs/_dax.py +8 -2
- sempy_labs/_delta_analyzer.py +8 -18
- sempy_labs/_generate_semantic_model.py +6 -7
- sempy_labs/_helper_functions.py +205 -64
- sempy_labs/_kql_databases.py +18 -0
- sempy_labs/_kusto.py +135 -0
- sempy_labs/_list_functions.py +5 -1
- sempy_labs/_vertipaq.py +6 -6
- sempy_labs/_warehouses.py +3 -3
- sempy_labs/admin/__init__.py +6 -0
- sempy_labs/admin/_artifacts.py +3 -3
- sempy_labs/admin/_capacities.py +161 -1
- sempy_labs/admin/_dataflows.py +45 -0
- sempy_labs/admin/_items.py +16 -11
- sempy_labs/admin/_tenant.py +5 -5
- sempy_labs/directlake/_generate_shared_expression.py +25 -26
- sempy_labs/lakehouse/_get_lakehouse_columns.py +41 -18
- sempy_labs/lakehouse/_get_lakehouse_tables.py +66 -39
- sempy_labs/lakehouse/_lakehouse.py +44 -35
- sempy_labs/migration/_migrate_calctables_to_lakehouse.py +7 -12
- sempy_labs/migration/_refresh_calc_tables.py +7 -6
- sempy_labs/tom/_model.py +21 -14
- {semantic_link_labs-0.9.9.dist-info → semantic_link_labs-0.9.10.dist-info}/licenses/LICENSE +0 -0
- {semantic_link_labs-0.9.9.dist-info → semantic_link_labs-0.9.10.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.10
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -15,7 +15,7 @@ Classifier: Framework :: Jupyter
|
|
|
15
15
|
Requires-Python: <3.12,>=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: semantic-link-sempy>=0.
|
|
18
|
+
Requires-Dist: semantic-link-sempy>=0.10.2
|
|
19
19
|
Requires-Dist: anytree
|
|
20
20
|
Requires-Dist: powerbiclient
|
|
21
21
|
Requires-Dist: polib
|
|
@@ -27,7 +27,7 @@ Dynamic: license-file
|
|
|
27
27
|
# Semantic Link Labs
|
|
28
28
|
|
|
29
29
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
30
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
31
31
|
[](https://github.com/psf/black)
|
|
32
32
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
33
33
|
|
|
@@ -149,6 +149,8 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
149
149
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
150
150
|
|
|
151
151
|
## Version History
|
|
152
|
+
* [0.9.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.10) (April 24, 2025)
|
|
153
|
+
* [0.9.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.9) (April 7, 2025)
|
|
152
154
|
* [0.9.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.8) (April 3, 2025)
|
|
153
155
|
* [0.9.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.7) (April 1, 2025)
|
|
154
156
|
* [0.9.6](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.6) (March 12, 2025)
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
semantic_link_labs-0.9.
|
|
2
|
-
sempy_labs/__init__.py,sha256=
|
|
1
|
+
semantic_link_labs-0.9.10.dist-info/licenses/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
|
|
2
|
+
sempy_labs/__init__.py,sha256=npRl1YYZaQziVAKhYkxcjFiCR2J--D2azy-SoDe_QtM,15745
|
|
3
3
|
sempy_labs/_ai.py,sha256=BD1TdGOJ7T4m3x426OP-FLb7bevn-9gKY8BTEDAJDQU,16205
|
|
4
4
|
sempy_labs/_authentication.py,sha256=GjtN5XqIyWXbR5Ni4hfYiUNwgFa-ySX8e-BrqE1vgGc,6903
|
|
5
5
|
sempy_labs/_capacities.py,sha256=n48NYTY03zygRzcfyK1UOkSwTqKSyQefQ10IKQh-dfA,40426
|
|
6
6
|
sempy_labs/_capacity_migration.py,sha256=GGIMrHwc7IEVJ9pDwmikXiF2QHu2nYqNyG235QYbmEw,24837
|
|
7
|
-
sempy_labs/_clear_cache.py,sha256=
|
|
7
|
+
sempy_labs/_clear_cache.py,sha256=UY_pljGeqb168Qe5sP66ecLeREPN4NMpjIEocCmxg0M,13201
|
|
8
8
|
sempy_labs/_connections.py,sha256=Cc3VpQtXUDVpEyn5CVd9lGeZ13Nrdk_E_XrLu4pGRi8,18658
|
|
9
9
|
sempy_labs/_dashboards.py,sha256=cyFD-pUUFu4scGkbitilrI22GW5dTmTkUZ15ou7Bl-A,1880
|
|
10
10
|
sempy_labs/_data_pipelines.py,sha256=cW_WGmuWD4V9IgLprKL4TqFXgid4eTBXvEL3-IArS0w,4817
|
|
11
11
|
sempy_labs/_dataflows.py,sha256=xv-wRDUq4Bzz-BOs1Jdb4bgS9HbPLpa1GqexfA6H0mg,8053
|
|
12
|
-
sempy_labs/_dax.py,sha256=
|
|
12
|
+
sempy_labs/_dax.py,sha256=Q_GylKeuHFnRB_sztZS1ON5v5tr6ua6lc9elyJYKbV8,17219
|
|
13
13
|
sempy_labs/_dax_query_view.py,sha256=_zSvgystZzBj5euNTLKTg7-G77XVk0vqyqrDT72VvoM,1892
|
|
14
|
-
sempy_labs/_delta_analyzer.py,sha256=
|
|
14
|
+
sempy_labs/_delta_analyzer.py,sha256=eT74ed0vaTbuSS0BkdCGRymdyjb3UHV3M8ToPhK8K00,17390
|
|
15
15
|
sempy_labs/_delta_analyzer_history.py,sha256=A50dlBd2d3ILKV7Fwj4pfIRtXKmCFslhk1gpeEw4inc,10765
|
|
16
16
|
sempy_labs/_deployment_pipelines.py,sha256=SDQYkCAhOAlxBr58jYxtLFOVySiRXO0_WhfOKGDeYZQ,6254
|
|
17
17
|
sempy_labs/_documentation.py,sha256=yVA8VPEzx_fmljtcvSxtB7-BeupYsfdMXXjp6Fpnyo8,5007
|
|
@@ -20,15 +20,16 @@ sempy_labs/_eventhouses.py,sha256=WEf33difBOTGTZGh1QFmY4gv-e43uwO1V54nrsjGGyY,53
|
|
|
20
20
|
sempy_labs/_eventstreams.py,sha256=c8nNdRM8eeDOYXd_AtRp7zYHYaqV9p1bI2V0boUrCuA,3492
|
|
21
21
|
sempy_labs/_external_data_shares.py,sha256=s2okFvtCG5FDMbMJ_q6YSlCkVVFiE9sh2imVxZq1woU,6450
|
|
22
22
|
sempy_labs/_gateways.py,sha256=6JE6VeGFPKF617sf2mMkxXVOz57YHI5jAQLAF-BzRLc,17527
|
|
23
|
-
sempy_labs/_generate_semantic_model.py,sha256=
|
|
23
|
+
sempy_labs/_generate_semantic_model.py,sha256=9-ziVrbG_IqPAKLnqRYAo8UrUMFw5Hufn02w_QvaKe4,18423
|
|
24
24
|
sempy_labs/_git.py,sha256=RyaT4XzrSi-4NLJZWiWZnnNpMgrKzRNxhyY8b1O2I6c,17819
|
|
25
25
|
sempy_labs/_graphQL.py,sha256=truXeIUPRKLwc4skhs3FZYNcKP9FCGKly9en0YkR4NE,2690
|
|
26
|
-
sempy_labs/_helper_functions.py,sha256=
|
|
26
|
+
sempy_labs/_helper_functions.py,sha256=0eNEz8JItYjBe1fwZ0ZkRKJED5ull0I6T24RzgGx-2E,67340
|
|
27
27
|
sempy_labs/_icons.py,sha256=SB9EQeoFCfD4bO6fcYuJOoPRSYenSrW0rI9G5RFsH28,3579
|
|
28
28
|
sempy_labs/_job_scheduler.py,sha256=_-Pifkttk1oPNxewxwWcQ4QC_Hr24GSi6nmrEXwc0pc,15814
|
|
29
|
-
sempy_labs/_kql_databases.py,sha256=
|
|
29
|
+
sempy_labs/_kql_databases.py,sha256=UtpYVBsxwWQDnqwdjq186bZzw5IlkD2S9KHA6Kw75U0,4738
|
|
30
30
|
sempy_labs/_kql_querysets.py,sha256=Jjcs4SkjeirnDkG6zfsl0KRUXVzMyWii0Yn0JMWwln8,3502
|
|
31
|
-
sempy_labs/
|
|
31
|
+
sempy_labs/_kusto.py,sha256=ZEwvErkLUpichnQfrIVXg2XiYvbuxcL8u-9RnsAp98M,4502
|
|
32
|
+
sempy_labs/_list_functions.py,sha256=Yn1RZ0kMhA24vVpOr1hoet4WAQT93NZOWpMFdyV3HNw,62036
|
|
32
33
|
sempy_labs/_managed_private_endpoints.py,sha256=Vqicp_EiGg_m8aA2F__gaJiB9cwjbxQOSOi7hkS6FvQ,6907
|
|
33
34
|
sempy_labs/_mirrored_databases.py,sha256=-9ZV2PdPeIc4lvFNkpPMm_9wkGIY1QLZXspYdSev5oQ,13147
|
|
34
35
|
sempy_labs/_mirrored_warehouses.py,sha256=Q3WlRjUwCLz8KW1eN8MiTPeY0P52Vkuz5kgnv4GvQ3k,1739
|
|
@@ -50,8 +51,8 @@ sempy_labs/_sql.py,sha256=s4VMcs1lIn39sYKRnSp6QsdRR3J-84kT_SPCKdwzAyo,8158
|
|
|
50
51
|
sempy_labs/_sqldatabase.py,sha256=8HV3UtsLiwexmPSjYnhnYnD6xEvgFpTG13jcOuGheuI,6470
|
|
51
52
|
sempy_labs/_translations.py,sha256=i4K2PFk6-TcmAnUpqz-z_GuDv9XEp1cBs0KY-x6ja1w,16168
|
|
52
53
|
sempy_labs/_utils.py,sha256=aKGnUiXSLLRQRXXv8TH_XhGcOtDsnrs0RHmQ6YZMn3o,1786
|
|
53
|
-
sempy_labs/_vertipaq.py,sha256=
|
|
54
|
-
sempy_labs/_warehouses.py,sha256=
|
|
54
|
+
sempy_labs/_vertipaq.py,sha256=1UvB79xOxeGdRFINsUsreXxtZtiatHlACAfbQhv45as,38536
|
|
55
|
+
sempy_labs/_warehouses.py,sha256=wF38YP4-39KPsXPyexJahZPrYAyLc5xfrerJvS7My5Q,7286
|
|
55
56
|
sempy_labs/_workloads.py,sha256=ifQ6Jv0_MDzjfu993bU8V7thOdW5kFyp3MjA082rsrE,4687
|
|
56
57
|
sempy_labs/_workspace_identity.py,sha256=plxgcqt2aBXgLpyn1dpHhzh_5Z-gFkLK8RtId2OIX5s,2561
|
|
57
58
|
sempy_labs/_workspaces.py,sha256=wHBR2e5wOhhWN6PiFefSFzYrwvdgMkG0dg2gEpPcZ4o,13090
|
|
@@ -93,28 +94,29 @@ sempy_labs/_bpa_translation/_model/_translations_tr-TR.po,sha256=NdW-X4E0QmeLKM0
|
|
|
93
94
|
sempy_labs/_bpa_translation/_model/_translations_uk-UA.po,sha256=3NsFN8hoor_5L6738FjpJ8o4spwp8FNFGbVItHD-_ec,43500
|
|
94
95
|
sempy_labs/_bpa_translation/_model/_translations_zh-CN.po,sha256=ipMbnet7ZI5mZoC8KonYKVwGmFLHFB_9KIDOoBgSNfo,26815
|
|
95
96
|
sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po,sha256=5v6tVKGruqneAeMoa6F3tyg_JBL8qOpqOJofWpq2W3U,31518
|
|
96
|
-
sempy_labs/admin/__init__.py,sha256=
|
|
97
|
+
sempy_labs/admin/__init__.py,sha256=McI1-wyaoxcCIzffi-aWvU3ElfUgZLIEYR2tfcYI-hc,3875
|
|
97
98
|
sempy_labs/admin/_activities.py,sha256=YfISDzhXro9glEa_yJmoYv-2q2M1DIkoyNzgLl7eWuI,6695
|
|
98
99
|
sempy_labs/admin/_apps.py,sha256=PUEQlXbzVR9u3ZUQUhpfU3J-hfa8A2nTGFBpCqzMdW0,4085
|
|
99
|
-
sempy_labs/admin/_artifacts.py,sha256=
|
|
100
|
+
sempy_labs/admin/_artifacts.py,sha256=hGTMY0t4qxK1zs89PIZQaNP5QHRCIWAOvp2FiWHtQpE,2249
|
|
100
101
|
sempy_labs/admin/_basic_functions.py,sha256=NAiju3N6xGOHFbK6sRz8NyVOCsgDIwl50U2CRA2SV3g,16320
|
|
101
|
-
sempy_labs/admin/_capacities.py,sha256=
|
|
102
|
+
sempy_labs/admin/_capacities.py,sha256=aYPanX7esKoq2EtlE1iyBYmBYsaifDduUkJU8qHt9DU,15586
|
|
103
|
+
sempy_labs/admin/_dataflows.py,sha256=u7XrYSJg4_nagle4zv46BN70goL3OHbgO_QXpwRZqjk,1457
|
|
102
104
|
sempy_labs/admin/_datasets.py,sha256=kMerpBNro--kKdp2rhEKnVe0JDGjMDsxqgfbbw17K-U,6235
|
|
103
105
|
sempy_labs/admin/_domains.py,sha256=Z0EhIJCcujx1NumeqM4eKAvai18p-9TAw1WJaU-cbbE,15076
|
|
104
106
|
sempy_labs/admin/_external_data_share.py,sha256=q4gw5iYZJDH-9xIM6L0b2CU9ebUIdE-ZVrFsulRHyUU,3364
|
|
105
107
|
sempy_labs/admin/_git.py,sha256=gsbDQKd66knCI_Zh8vHSfHK-uQVJjVmhKKvfMMYKZyA,2264
|
|
106
|
-
sempy_labs/admin/_items.py,sha256=
|
|
108
|
+
sempy_labs/admin/_items.py,sha256=BO4X_hpp94u4FUSn6Rb25gsRz1TgQAvLKLSwtzOLlVw,8824
|
|
107
109
|
sempy_labs/admin/_reports.py,sha256=nPDoC90Yzc67CtiuL4WYBYkGYuUQOnZAy0PCU0aYKj8,7857
|
|
108
110
|
sempy_labs/admin/_scanner.py,sha256=0mKi0ihJETdsSaeHFBEq3drcCS8J_enWWkIMBMECz64,4370
|
|
109
111
|
sempy_labs/admin/_shared.py,sha256=srgkqttbMbK5XXjOt4zeAV8rMCvK7zEus55HsGtNUFI,3007
|
|
110
|
-
sempy_labs/admin/_tenant.py,sha256=
|
|
112
|
+
sempy_labs/admin/_tenant.py,sha256=D8x45G4U8aiDlYcYTWUIg--Rrl1T0HwRf0qtk-jUBbo,19347
|
|
111
113
|
sempy_labs/admin/_users.py,sha256=eEOkgvny3FwMuUrSIBQ0n3JwrzWV_6_nwGc8_c-eXSM,4571
|
|
112
114
|
sempy_labs/admin/_workspaces.py,sha256=XiiO3vyuJxKkVf9ZrW7261wHSBrnd8r7rbia8HGDFkI,4911
|
|
113
115
|
sempy_labs/directlake/__init__.py,sha256=etaj-3wqe5t93mu74tGYjEOQ6gtHWUogidOygiVvlq8,2131
|
|
114
116
|
sempy_labs/directlake/_directlake_schema_compare.py,sha256=tVc6hIgDxxA7a8V51e5tlzlp3bzVVTqQ_OKsTNxiWG4,5074
|
|
115
117
|
sempy_labs/directlake/_directlake_schema_sync.py,sha256=ipONLkBaXm4WgcMMChAyD4rVushdqdjAQdexT-fJxcY,6573
|
|
116
118
|
sempy_labs/directlake/_dl_helper.py,sha256=HHFy6tW-tSVZ4YHxSHvt6pXrloh0O6Lx7yNmZE7IAI4,10348
|
|
117
|
-
sempy_labs/directlake/_generate_shared_expression.py,sha256=
|
|
119
|
+
sempy_labs/directlake/_generate_shared_expression.py,sha256=gAVBK0l_CRxJCZzMJgxOxEHhXx1w0ERL2K3REnEseGw,3391
|
|
118
120
|
sempy_labs/directlake/_get_directlake_lakehouse.py,sha256=e0WFQm4-daJR4K1aHuVaubu7T26yTeBgfNEMOXk-EzM,2392
|
|
119
121
|
sempy_labs/directlake/_get_shared_expression.py,sha256=qc85kXggkx_7Sz_rAAli_yPnLzrGZpgD8IfVbTfZhQM,1133
|
|
120
122
|
sempy_labs/directlake/_guardrails.py,sha256=wNVXpeiZckgLTly4cS5DU5DoV9x1S4DMxN5S08qAavE,2749
|
|
@@ -129,19 +131,19 @@ sempy_labs/graph/_teams.py,sha256=SRFaFuxtB7ylC5WeXIdrW0aLCxc_JTJHeEmxOPG99r8,30
|
|
|
129
131
|
sempy_labs/graph/_users.py,sha256=dFOZ-jel6Aj4Um66f1jzQrgV0fOoI0cQnZfmR4OJSXo,5947
|
|
130
132
|
sempy_labs/lakehouse/__init__.py,sha256=5dRO6WfcHANed720iGhrgW4QajzV1emT47bPpCSKJNg,956
|
|
131
133
|
sempy_labs/lakehouse/_blobs.py,sha256=GgS2Zx6_0xzwUzuSBUll2bkNRFE-ThbK8jdYh-lJ2LY,8095
|
|
132
|
-
sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=
|
|
133
|
-
sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=
|
|
134
|
-
sempy_labs/lakehouse/_lakehouse.py,sha256=
|
|
134
|
+
sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=dF5rLkdD3PB8EiXQewRdnr7MzbDGkZWHrFfI01_a7K4,3710
|
|
135
|
+
sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=YZkb8AsQmOK801andbCivhTH5DVFXwzTRJp-q4o9QJI,9803
|
|
136
|
+
sempy_labs/lakehouse/_lakehouse.py,sha256=Fq_RuY7kn8BZLFiYpnVNTYmbLMMt0mCw83P1YxXyfmg,8861
|
|
135
137
|
sempy_labs/lakehouse/_shortcuts.py,sha256=24sPtX98ho84fNV_JCAHZrSkvk0Ui7p-0b-jTdGOGM8,16580
|
|
136
138
|
sempy_labs/migration/__init__.py,sha256=142n01VAqlcx4E0mGGRtUfVOEwAXVdiHI_XprmUm7As,1175
|
|
137
139
|
sempy_labs/migration/_create_pqt_file.py,sha256=eRK0Jz9ZeV_7jV3kNRze0bTAIqxsAZXLKMGE_loKOaY,9677
|
|
138
140
|
sempy_labs/migration/_direct_lake_to_import.py,sha256=GTSERKSwj4M4wOsENgDbb-ZO7NFqwD1VUcyOS73AbaM,3948
|
|
139
|
-
sempy_labs/migration/_migrate_calctables_to_lakehouse.py,sha256=
|
|
141
|
+
sempy_labs/migration/_migrate_calctables_to_lakehouse.py,sha256=2e3q__JBgm0umQX-Pc_c5pY2rmj-0fvjTqdkLeoMD-U,17774
|
|
140
142
|
sempy_labs/migration/_migrate_calctables_to_semantic_model.py,sha256=Qt4WfmllCtSl-xkWzWWL5sTzi3lQDaJp43lVEXQisVY,6303
|
|
141
143
|
sempy_labs/migration/_migrate_model_objects_to_semantic_model.py,sha256=RD0ttWcBratAzpPKjFF6jpEnZEd6M7m8OfEUFbkInbA,22950
|
|
142
144
|
sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py,sha256=HYi2vn7yYDsBCTAXFTi6UiB86kdSlhQKPdwAt1nTKEE,7169
|
|
143
145
|
sempy_labs/migration/_migration_validation.py,sha256=AHURrWofb-U-L2Bdu36mcisVXOuZXi6Smgrrs2kjYBM,2650
|
|
144
|
-
sempy_labs/migration/_refresh_calc_tables.py,sha256=
|
|
146
|
+
sempy_labs/migration/_refresh_calc_tables.py,sha256=qUBPZ5HAHyE5ev6STKDcmtEpRuLDX5RzYTKre4ZElj4,5443
|
|
145
147
|
sempy_labs/report/_BPAReportTemplate.json,sha256=9Uh-7E6d2ooxQ7j5JRayv_ayEULc7Gzg42kZGKdOqH8,63920
|
|
146
148
|
sempy_labs/report/__init__.py,sha256=bPZ_MMqKGokskjJwM3T89LxIVNa2AXJg8Lr-mvJhP0E,1392
|
|
147
149
|
sempy_labs/report/_download_report.py,sha256=hCQ2_fSXSCqSUeaNM2Tf9T3MpRofREnDwp_zrfp7iTA,2703
|
|
@@ -186,8 +188,8 @@ sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visua
|
|
|
186
188
|
sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json,sha256=wBVuNc8S2NaUA0FC708w6stmR2djNZp8nAsHMqesgsc,293
|
|
187
189
|
sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json,sha256=mlY6t9OlSe-Y6_QmXJpS1vggU6Y3FjISUKECL8FVSg8,931
|
|
188
190
|
sempy_labs/tom/__init__.py,sha256=Qbs8leW0fjzvWwOjyWK3Hjeehu7IvpB1beASGsi28bk,121
|
|
189
|
-
sempy_labs/tom/_model.py,sha256=
|
|
190
|
-
semantic_link_labs-0.9.
|
|
191
|
-
semantic_link_labs-0.9.
|
|
192
|
-
semantic_link_labs-0.9.
|
|
193
|
-
semantic_link_labs-0.9.
|
|
191
|
+
sempy_labs/tom/_model.py,sha256=sqs8u69RZyQnGzt-ZBJGE6PF-JwhFCm5YosaKeR-hbo,194594
|
|
192
|
+
semantic_link_labs-0.9.10.dist-info/METADATA,sha256=CDC3S525ttk6M0qTW9m5mzYSlHXAIVxpZKPO1WAE3vs,26488
|
|
193
|
+
semantic_link_labs-0.9.10.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
|
|
194
|
+
semantic_link_labs-0.9.10.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
|
|
195
|
+
semantic_link_labs-0.9.10.dist-info/RECORD,,
|
sempy_labs/__init__.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
from sempy_labs._kusto import (
|
|
2
|
+
query_kusto,
|
|
3
|
+
query_workspace_monitoring,
|
|
4
|
+
)
|
|
1
5
|
from sempy_labs._delta_analyzer_history import (
|
|
2
6
|
delta_analyzer_history,
|
|
3
7
|
)
|
|
@@ -558,4 +562,6 @@ __all__ = [
|
|
|
558
562
|
"delete_sql_database",
|
|
559
563
|
"list_sql_databases",
|
|
560
564
|
"delta_analyzer_history",
|
|
565
|
+
"query_kusto",
|
|
566
|
+
"query_workspace_monitoring",
|
|
561
567
|
]
|
sempy_labs/_clear_cache.py
CHANGED
|
@@ -59,6 +59,7 @@ def backup_semantic_model(
|
|
|
59
59
|
allow_overwrite: bool = True,
|
|
60
60
|
apply_compression: bool = True,
|
|
61
61
|
workspace: Optional[str | UUID] = None,
|
|
62
|
+
password: Optional[str] = None,
|
|
62
63
|
):
|
|
63
64
|
"""
|
|
64
65
|
`Backs up <https://learn.microsoft.com/azure/analysis-services/analysis-services-backup>`_ a semantic model to the ADLS Gen2 storage account connected to the workspace.
|
|
@@ -72,6 +73,8 @@ def backup_semantic_model(
|
|
|
72
73
|
Must end in '.abf'.
|
|
73
74
|
Example 1: file_path = 'MyModel.abf'
|
|
74
75
|
Example 2: file_path = 'MyFolder/MyModel.abf'
|
|
76
|
+
password : Optional[str], default=None
|
|
77
|
+
Password to encrypt the backup file. If None, no password is used.
|
|
75
78
|
allow_overwrite : bool, default=True
|
|
76
79
|
If True, overwrites backup files of the same name. If False, the file you are saving cannot have the same name as a file that already exists in the same location.
|
|
77
80
|
apply_compression : bool, default=True
|
|
@@ -99,6 +102,9 @@ def backup_semantic_model(
|
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
|
|
105
|
+
if password:
|
|
106
|
+
tmsl["backup"]["password"] = password # Add password only if provided
|
|
107
|
+
|
|
102
108
|
fabric.execute_tmsl(script=tmsl, workspace=workspace_id)
|
|
103
109
|
print(
|
|
104
110
|
f"{icons.green_dot} The '{dataset_name}' semantic model within the '{workspace_name}' workspace has been backed up to the '{file_path}' location."
|
|
@@ -113,6 +119,7 @@ def restore_semantic_model(
|
|
|
113
119
|
ignore_incompatibilities: bool = True,
|
|
114
120
|
force_restore: bool = False,
|
|
115
121
|
workspace: Optional[str | UUID] = None,
|
|
122
|
+
password: Optional[str] = None,
|
|
116
123
|
):
|
|
117
124
|
"""
|
|
118
125
|
`Restores <https://learn.microsoft.com/power-bi/enterprise/service-premium-backup-restore-dataset>`_ a semantic model based on a backup (.abf) file
|
|
@@ -126,6 +133,8 @@ def restore_semantic_model(
|
|
|
126
133
|
The location in which to backup the semantic model. Must end in '.abf'.
|
|
127
134
|
Example 1: file_path = 'MyModel.abf'
|
|
128
135
|
Example 2: file_path = 'MyFolder/MyModel.abf'
|
|
136
|
+
password : Optional[str], default=None
|
|
137
|
+
Password to decrypt the backup file. If None, no password is used.
|
|
129
138
|
allow_overwrite : bool, default=True
|
|
130
139
|
If True, overwrites backup files of the same name. If False, the file you are saving cannot have the same name as a file that already exists in the same location.
|
|
131
140
|
ignore_incompatibilities : bool, default=True
|
|
@@ -155,6 +164,9 @@ def restore_semantic_model(
|
|
|
155
164
|
}
|
|
156
165
|
}
|
|
157
166
|
|
|
167
|
+
if password:
|
|
168
|
+
tmsl["restore"]["password"] = password
|
|
169
|
+
|
|
158
170
|
if force_restore:
|
|
159
171
|
tmsl["restore"]["forceRestore"] = force_restore
|
|
160
172
|
|
sempy_labs/_dax.py
CHANGED
|
@@ -206,9 +206,15 @@ def get_dax_query_dependencies(
|
|
|
206
206
|
].reset_index(drop=True)
|
|
207
207
|
|
|
208
208
|
if put_in_memory:
|
|
209
|
-
|
|
209
|
+
# Only put columns in memory if they are in a Direct Lake table (and are not already in memory)
|
|
210
|
+
dfP = fabric.list_partitions(dataset=dataset, workspace=workspace)
|
|
211
|
+
dl_tables = dfP[dfP["Mode"] == "DirectLake"]["Table Name"].unique().tolist()
|
|
212
|
+
not_in_memory = dfC_filtered[
|
|
213
|
+
(dfC_filtered["Table Name"].isin(dl_tables))
|
|
214
|
+
& (dfC_filtered["Is Resident"] == False)
|
|
215
|
+
]
|
|
210
216
|
|
|
211
|
-
if
|
|
217
|
+
if not not_in_memory.empty:
|
|
212
218
|
_put_columns_into_memory(
|
|
213
219
|
dataset=dataset,
|
|
214
220
|
workspace=workspace,
|
sempy_labs/_delta_analyzer.py
CHANGED
|
@@ -16,7 +16,10 @@ from sempy_labs._helper_functions import (
|
|
|
16
16
|
resolve_lakehouse_name_and_id,
|
|
17
17
|
_read_delta_table,
|
|
18
18
|
_mount,
|
|
19
|
-
|
|
19
|
+
_read_delta_table_history,
|
|
20
|
+
resolve_workspace_id,
|
|
21
|
+
resolve_lakehouse_id,
|
|
22
|
+
_get_delta_table,
|
|
20
23
|
)
|
|
21
24
|
from sempy._utils._log import log
|
|
22
25
|
from sempy_labs.lakehouse._get_lakehouse_tables import get_lakehouse_tables
|
|
@@ -164,11 +167,7 @@ def delta_analyzer(
|
|
|
164
167
|
is_vorder = any(b"vorder" in key for key in schema.keys())
|
|
165
168
|
|
|
166
169
|
# Get the common details of the Delta table
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
from delta import DeltaTable
|
|
170
|
-
|
|
171
|
-
delta_table = DeltaTable.forPath(spark, delta_table_path)
|
|
170
|
+
delta_table = _get_delta_table(delta_table_path)
|
|
172
171
|
table_df = delta_table.toDF()
|
|
173
172
|
# total_partition_count = table_df.rdd.getNumPartitions()
|
|
174
173
|
row_count = table_df.count()
|
|
@@ -457,19 +456,10 @@ def get_delta_table_history(
|
|
|
457
456
|
def camel_to_title(text):
|
|
458
457
|
return re.sub(r"([a-z])([A-Z])", r"\1 \2", text).title()
|
|
459
458
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace=workspace)
|
|
463
|
-
(lakehouse_name, lakehouse_id) = resolve_lakehouse_name_and_id(
|
|
464
|
-
lakehouse=lakehouse, workspace=workspace
|
|
465
|
-
)
|
|
459
|
+
workspace_id = resolve_workspace_id(workspace=workspace)
|
|
460
|
+
lakehouse_id = resolve_lakehouse_id(lakehouse=lakehouse, workspace=workspace_id)
|
|
466
461
|
path = create_abfss_path(lakehouse_id, workspace_id, table_name, schema)
|
|
467
|
-
|
|
468
|
-
from delta import DeltaTable
|
|
469
|
-
|
|
470
|
-
delta_table = DeltaTable.forPath(spark, path)
|
|
471
|
-
df = delta_table.history().toPandas()
|
|
472
|
-
|
|
462
|
+
df = _read_delta_table_history(path=path)
|
|
473
463
|
df.rename(columns=lambda col: camel_to_title(col), inplace=True)
|
|
474
464
|
|
|
475
465
|
return df
|
|
@@ -496,20 +496,17 @@ def get_semantic_model_size(
|
|
|
496
496
|
The size of the semantic model in
|
|
497
497
|
"""
|
|
498
498
|
|
|
499
|
-
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
500
|
-
(dataset_name, dataset_id) = resolve_dataset_name_and_id(dataset, workspace_id)
|
|
501
|
-
|
|
502
499
|
dict = fabric.evaluate_dax(
|
|
503
|
-
dataset=
|
|
504
|
-
workspace=
|
|
500
|
+
dataset=dataset,
|
|
501
|
+
workspace=workspace,
|
|
505
502
|
dax_string="""
|
|
506
503
|
EVALUATE SELECTCOLUMNS(FILTER(INFO.STORAGETABLECOLUMNS(), [COLUMN_TYPE] = "BASIC_DATA"),[DICTIONARY_SIZE])
|
|
507
504
|
""",
|
|
508
505
|
)
|
|
509
506
|
|
|
510
507
|
used_size = fabric.evaluate_dax(
|
|
511
|
-
dataset=
|
|
512
|
-
workspace=
|
|
508
|
+
dataset=dataset,
|
|
509
|
+
workspace=workspace,
|
|
513
510
|
dax_string="""
|
|
514
511
|
EVALUATE SELECTCOLUMNS(INFO.STORAGETABLECOLUMNSEGMENTS(),[USED_SIZE])
|
|
515
512
|
""",
|
|
@@ -524,5 +521,7 @@ def get_semantic_model_size(
|
|
|
524
521
|
result = model_size / (1024**2) * 10**6
|
|
525
522
|
elif model_size >= 10**3:
|
|
526
523
|
result = model_size / (1024) * 10**3
|
|
524
|
+
else:
|
|
525
|
+
result = model_size
|
|
527
526
|
|
|
528
527
|
return result
|