semantic-link-labs 0.8.9__tar.gz → 0.8.11__tar.gz
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.8.9 → semantic_link_labs-0.8.11}/PKG-INFO +5 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/README.md +4 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/docs/source/conf.py +1 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/pyproject.toml +1 -1
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/PKG-INFO +5 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/SOURCES.txt +1 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/__init__.py +14 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_authentication.py +31 -2
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_clear_cache.py +39 -37
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_connections.py +13 -13
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_data_pipelines.py +20 -20
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_dataflows.py +27 -28
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_dax.py +41 -47
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_environments.py +26 -23
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_eventhouses.py +16 -15
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_eventstreams.py +16 -15
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_external_data_shares.py +18 -20
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_gateways.py +57 -11
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_generate_semantic_model.py +100 -71
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_git.py +134 -67
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_helper_functions.py +199 -145
- semantic_link_labs-0.8.11/src/sempy_labs/_job_scheduler.py +92 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_kql_databases.py +16 -15
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_kql_querysets.py +16 -15
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_list_functions.py +281 -120
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_managed_private_endpoints.py +19 -17
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_mirrored_databases.py +51 -48
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_mirrored_warehouses.py +5 -4
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_ml_experiments.py +16 -15
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_ml_models.py +15 -14
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_model_bpa.py +27 -25
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_model_bpa_bulk.py +3 -3
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_model_dependencies.py +60 -28
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_notebooks.py +73 -39
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_one_lake_integration.py +23 -26
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_query_scale_out.py +67 -64
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_refresh_semantic_model.py +47 -42
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_spark.py +33 -32
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_sql.py +12 -9
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_translations.py +10 -7
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_vertipaq.py +34 -31
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_warehouses.py +22 -21
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_workspace_identity.py +11 -10
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_workspaces.py +40 -33
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/__init__.py +4 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/_basic_functions.py +44 -12
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/_external_data_share.py +3 -3
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/_items.py +4 -4
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/_scanner.py +7 -5
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_directlake_schema_compare.py +18 -14
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_directlake_schema_sync.py +18 -12
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_dl_helper.py +36 -32
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_generate_shared_expression.py +10 -9
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +16 -13
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_get_shared_expression.py +4 -3
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_guardrails.py +12 -6
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +15 -9
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +16 -10
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +35 -31
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +34 -31
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/_warm_cache.py +87 -65
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +10 -8
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +10 -9
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/lakehouse/_lakehouse.py +17 -13
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/lakehouse/_shortcuts.py +42 -23
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_create_pqt_file.py +16 -11
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_refresh_calc_tables.py +16 -10
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_download_report.py +9 -8
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_generate_report.py +40 -44
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_paginated.py +9 -9
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_report_bpa.py +13 -9
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_report_functions.py +80 -91
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_report_helper.py +8 -4
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_report_list_functions.py +24 -13
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_report_rebind.py +17 -16
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_reportwrapper.py +41 -33
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/tom/_model.py +117 -38
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/tests/test_shortcuts.py +6 -5
- semantic_link_labs-0.8.11/tests/test_tom.py +37 -0
- semantic_link_labs-0.8.9/tests/test_tom.py +0 -31
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.github/workflows/build.yaml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.github/workflows/codeql.yaml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.gitignore +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.readthedocs.yaml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/.vscode/settings.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/CODE_OF_CONDUCT.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/LICENSE +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/SECURITY.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/SUPPORT.md +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/docs/Makefile +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/docs/make.bat +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/docs/requirements.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/docs/source/index.rst +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/docs/source/modules.rst +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/environment.yml +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Capacity Migration.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Migration to Direct Lake.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Model Optimization.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Query Scale Out.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Report Analysis.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/SQL.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Semantic Model Refresh.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/notebooks/Tabular Object Model.ipynb +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/setup.cfg +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/requires.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_ai.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_capacities.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_capacity_migration.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_deployment_pipelines.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_documentation.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_icons.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_model_auto_build.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_model_bpa_rules.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/_workloads.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/_domains.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/admin/_git.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/directlake/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/lakehouse/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/migration/_migration_validation.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/sempy_labs/tom/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/tests/__init__.py +0 -0
- {semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/tests/test_friendly_case.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.11
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -27,7 +27,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
|
|
|
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
|
|
|
@@ -64,6 +64,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
|
|
|
64
64
|
* [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
|
|
65
65
|
* [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
|
|
66
66
|
* [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
|
|
67
|
+
* [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
|
|
67
68
|
* Reports
|
|
68
69
|
* [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
|
|
69
70
|
* [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
|
|
@@ -141,6 +142,8 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
141
142
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
142
143
|
|
|
143
144
|
## Version History
|
|
145
|
+
* [0.8.11](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.11) (December 19, 2024)
|
|
146
|
+
* [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
|
|
144
147
|
* [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
|
|
145
148
|
* [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
|
|
146
149
|
* [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Semantic Link Labs
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
4
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
5
5
|
[](https://github.com/psf/black)
|
|
6
6
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
7
7
|
|
|
@@ -38,6 +38,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
|
|
|
38
38
|
* [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
|
|
39
39
|
* [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
|
|
40
40
|
* [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
|
|
41
|
+
* [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
|
|
41
42
|
* Reports
|
|
42
43
|
* [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
|
|
43
44
|
* [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
|
|
@@ -115,6 +116,8 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
115
116
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
116
117
|
|
|
117
118
|
## Version History
|
|
119
|
+
* [0.8.11](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.11) (December 19, 2024)
|
|
120
|
+
* [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
|
|
118
121
|
* [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
|
|
119
122
|
* [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
|
|
120
123
|
* [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
|
|
@@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath('../../src/'))
|
|
|
13
13
|
project = 'semantic-link-labs'
|
|
14
14
|
copyright = '2024, Microsoft and community'
|
|
15
15
|
author = 'Microsoft and community'
|
|
16
|
-
release = '0.8.
|
|
16
|
+
release = '0.8.11'
|
|
17
17
|
|
|
18
18
|
# -- General configuration ---------------------------------------------------
|
|
19
19
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
{semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.11
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -27,7 +27,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
|
|
|
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
|
|
|
@@ -64,6 +64,7 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
|
|
|
64
64
|
* [Dynamically generate a Direct Lake semantic model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.generate_direct_lake_semantic_model)
|
|
65
65
|
* [Check why a Direct Lake semantic model would fallback to DirectQuery](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.directlake.html#sempy_labs.directlake.check_fallback_reason)
|
|
66
66
|
* [View a measure dependency tree](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.measure_dependency_tree)
|
|
67
|
+
* [View unique columns touched in a single (or multiple) DAX query(ies)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.get_dax_query_dependencies)
|
|
67
68
|
* Reports
|
|
68
69
|
* [Report Best Practice Analyzer (BPA)](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.report.html#sempy_labs.report.run_report_bpa)
|
|
69
70
|
* [View report metadata](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Report%20Analysis.ipynb)
|
|
@@ -141,6 +142,8 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
141
142
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
142
143
|
|
|
143
144
|
## Version History
|
|
145
|
+
* [0.8.11](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.11) (December 19, 2024)
|
|
146
|
+
* [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
|
|
144
147
|
* [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
|
|
145
148
|
* [0.8.8](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.8) (November 28, 2024)
|
|
146
149
|
* [0.8.7](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.7) (November 27, 2024)
|
{semantic_link_labs-0.8.9 → semantic_link_labs-0.8.11}/src/semantic_link_labs.egg-info/SOURCES.txt
RENAMED
|
@@ -54,6 +54,7 @@ src/sempy_labs/_generate_semantic_model.py
|
|
|
54
54
|
src/sempy_labs/_git.py
|
|
55
55
|
src/sempy_labs/_helper_functions.py
|
|
56
56
|
src/sempy_labs/_icons.py
|
|
57
|
+
src/sempy_labs/_job_scheduler.py
|
|
57
58
|
src/sempy_labs/_kql_databases.py
|
|
58
59
|
src/sempy_labs/_kql_querysets.py
|
|
59
60
|
src/sempy_labs/_list_functions.py
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from sempy_labs._job_scheduler import list_item_job_instances
|
|
1
2
|
from sempy_labs._gateways import (
|
|
2
3
|
list_gateway_members,
|
|
3
4
|
list_gateway_role_assigments,
|
|
@@ -8,6 +9,7 @@ from sempy_labs._gateways import (
|
|
|
8
9
|
create_vnet_gateway,
|
|
9
10
|
update_vnet_gateway,
|
|
10
11
|
update_on_premises_gateway,
|
|
12
|
+
bind_semantic_model_to_gateway,
|
|
11
13
|
)
|
|
12
14
|
|
|
13
15
|
from sempy_labs._authentication import (
|
|
@@ -159,7 +161,8 @@ from sempy_labs._git import (
|
|
|
159
161
|
commit_to_git,
|
|
160
162
|
initialize_git_connection,
|
|
161
163
|
update_from_git,
|
|
162
|
-
|
|
164
|
+
connect_workspace_to_azure_dev_ops,
|
|
165
|
+
connect_workspace_to_github,
|
|
163
166
|
disconnect_workspace_from_git,
|
|
164
167
|
)
|
|
165
168
|
from sempy_labs._dataflows import (
|
|
@@ -205,6 +208,8 @@ from sempy_labs._list_functions import (
|
|
|
205
208
|
list_lakehouses,
|
|
206
209
|
list_sql_endpoints,
|
|
207
210
|
update_item,
|
|
211
|
+
list_server_properties,
|
|
212
|
+
list_semantic_model_errors,
|
|
208
213
|
)
|
|
209
214
|
from sempy_labs._helper_functions import (
|
|
210
215
|
convert_to_friendly_case,
|
|
@@ -230,6 +235,7 @@ from sempy_labs._helper_functions import (
|
|
|
230
235
|
get_capacity_id,
|
|
231
236
|
get_capacity_name,
|
|
232
237
|
resolve_capacity_name,
|
|
238
|
+
get_tenant_id,
|
|
233
239
|
)
|
|
234
240
|
from sempy_labs._model_bpa_bulk import (
|
|
235
241
|
run_model_bpa_bulk,
|
|
@@ -364,7 +370,8 @@ __all__ = [
|
|
|
364
370
|
"commit_to_git",
|
|
365
371
|
"initialize_git_connection",
|
|
366
372
|
"update_from_git",
|
|
367
|
-
"
|
|
373
|
+
"connect_workspace_to_azure_dev_ops",
|
|
374
|
+
"connect_workspace_to_github",
|
|
368
375
|
"disconnect_workspace_from_git",
|
|
369
376
|
"create_environment",
|
|
370
377
|
"delete_environment",
|
|
@@ -458,4 +465,9 @@ __all__ = [
|
|
|
458
465
|
"update_vnet_gateway",
|
|
459
466
|
"update_on_premises_gateway",
|
|
460
467
|
"get_semantic_model_definition",
|
|
468
|
+
"get_tenant_id",
|
|
469
|
+
"list_server_properties",
|
|
470
|
+
"bind_semantic_model_to_gateway",
|
|
471
|
+
"list_semantic_model_errors",
|
|
472
|
+
"list_item_job_instances",
|
|
461
473
|
]
|
|
@@ -91,11 +91,13 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
91
91
|
|
|
92
92
|
return cls(credential)
|
|
93
93
|
|
|
94
|
-
def __call__(
|
|
94
|
+
def __call__(
|
|
95
|
+
self, audience: Literal["pbi", "storage", "azure", "graph"] = "pbi"
|
|
96
|
+
) -> str:
|
|
95
97
|
"""
|
|
96
98
|
Parameters
|
|
97
99
|
----------
|
|
98
|
-
audience : Literal["pbi", "storage"] = "pbi") -> str
|
|
100
|
+
audience : Literal["pbi", "storage", "azure", "graph"] = "pbi") -> str
|
|
99
101
|
Literal if it's for PBI/Fabric API call or OneLake/Storage Account call.
|
|
100
102
|
"""
|
|
101
103
|
if audience == "pbi":
|
|
@@ -104,5 +106,32 @@ class ServicePrincipalTokenProvider(TokenProvider):
|
|
|
104
106
|
).token
|
|
105
107
|
elif audience == "storage":
|
|
106
108
|
return self.credential.get_token("https://storage.azure.com/.default").token
|
|
109
|
+
elif audience == "azure":
|
|
110
|
+
return self.credential.get_token(
|
|
111
|
+
"https://management.azure.com/.default"
|
|
112
|
+
).token
|
|
113
|
+
elif audience == "graph":
|
|
114
|
+
return self.credential.get_token(
|
|
115
|
+
"https://graph.microsoft.com/.default"
|
|
116
|
+
).token
|
|
107
117
|
else:
|
|
108
118
|
raise NotImplementedError
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def _get_headers(
|
|
122
|
+
token_provider: str, audience: Literal["pbi", "storage", "azure", "graph"] = "azure"
|
|
123
|
+
):
|
|
124
|
+
"""
|
|
125
|
+
Generates headers for an API request.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
token = token_provider(audience=audience)
|
|
129
|
+
|
|
130
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
131
|
+
|
|
132
|
+
if audience == "graph":
|
|
133
|
+
headers["ConsistencyLevel"] = "eventual"
|
|
134
|
+
else:
|
|
135
|
+
headers["Content-Type"] = "application/json"
|
|
136
|
+
|
|
137
|
+
return headers
|
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
import sempy.fabric as fabric
|
|
2
2
|
from sempy_labs._helper_functions import (
|
|
3
|
-
resolve_dataset_id,
|
|
4
3
|
is_default_semantic_model,
|
|
5
4
|
_get_adls_client,
|
|
5
|
+
resolve_workspace_name_and_id,
|
|
6
|
+
resolve_dataset_name_and_id,
|
|
6
7
|
)
|
|
7
8
|
from typing import Optional
|
|
8
9
|
import sempy_labs._icons as icons
|
|
9
10
|
from sempy._utils._log import log
|
|
10
11
|
import pandas as pd
|
|
11
12
|
from sempy.fabric.exceptions import FabricHTTPException
|
|
13
|
+
from uuid import UUID
|
|
12
14
|
|
|
13
15
|
|
|
14
|
-
def clear_cache(dataset: str, workspace: Optional[str] = None):
|
|
16
|
+
def clear_cache(dataset: str | UUID, workspace: Optional[str | UUID] = None):
|
|
15
17
|
"""
|
|
16
18
|
Clears the cache of a semantic model.
|
|
17
19
|
See `here <https://learn.microsoft.com/analysis-services/instances/clear-the-analysis-services-caches?view=asallproducts-allversions>`_ for documentation.
|
|
18
20
|
|
|
19
21
|
Parameters
|
|
20
22
|
----------
|
|
21
|
-
dataset : str
|
|
22
|
-
Name of the semantic model.
|
|
23
|
-
workspace : str, default=None
|
|
24
|
-
The Fabric workspace name.
|
|
23
|
+
dataset : str | uuid.UUID
|
|
24
|
+
Name or ID of the semantic model.
|
|
25
|
+
workspace : str | uuid.UUID, default=None
|
|
26
|
+
The Fabric workspace name or ID.
|
|
25
27
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
26
28
|
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
27
29
|
"""
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
30
32
|
if is_default_semantic_model(dataset=dataset, workspace=workspace):
|
|
31
33
|
raise ValueError(
|
|
32
34
|
f"{icons.red_dot} Cannot run XMLA operations against a default semantic model. Please choose a different semantic model. "
|
|
33
35
|
"See here for more information: https://learn.microsoft.com/fabric/data-warehouse/semantic-models"
|
|
34
36
|
)
|
|
35
37
|
|
|
36
|
-
dataset_id =
|
|
38
|
+
(dataset_name, dataset_id) = resolve_dataset_name_and_id(dataset, workspace_id)
|
|
37
39
|
|
|
38
40
|
xmla = f"""
|
|
39
41
|
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
|
|
@@ -42,27 +44,27 @@ def clear_cache(dataset: str, workspace: Optional[str] = None):
|
|
|
42
44
|
</Object>
|
|
43
45
|
</ClearCache>
|
|
44
46
|
"""
|
|
45
|
-
fabric.execute_xmla(dataset=
|
|
47
|
+
fabric.execute_xmla(dataset=dataset_id, xmla_command=xmla, workspace=workspace_id)
|
|
46
48
|
print(
|
|
47
|
-
f"{icons.green_dot} Cache cleared for the '{
|
|
49
|
+
f"{icons.green_dot} Cache cleared for the '{dataset_name}' semantic model within the '{workspace_name}' workspace."
|
|
48
50
|
)
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
@log
|
|
52
54
|
def backup_semantic_model(
|
|
53
|
-
dataset: str,
|
|
55
|
+
dataset: str | UUID,
|
|
54
56
|
file_path: str,
|
|
55
57
|
allow_overwrite: bool = True,
|
|
56
58
|
apply_compression: bool = True,
|
|
57
|
-
workspace: Optional[str] = None,
|
|
59
|
+
workspace: Optional[str | UUID] = None,
|
|
58
60
|
):
|
|
59
61
|
"""
|
|
60
62
|
`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.
|
|
61
63
|
|
|
62
64
|
Parameters
|
|
63
65
|
----------
|
|
64
|
-
dataset : str
|
|
65
|
-
Name of the semantic model.
|
|
66
|
+
dataset : str | uuid.UUID
|
|
67
|
+
Name or ID of the semantic model.
|
|
66
68
|
file_path : str
|
|
67
69
|
The ADLS Gen2 storage account location in which to backup the semantic model. Always saves within the 'power-bi-backup/<workspace name>' folder.
|
|
68
70
|
Must end in '.abf'.
|
|
@@ -72,8 +74,8 @@ def backup_semantic_model(
|
|
|
72
74
|
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.
|
|
73
75
|
apply_compression : bool, default=True
|
|
74
76
|
If True, compresses the backup file. Compressed backup files save disk space, but require slightly higher CPU utilization.
|
|
75
|
-
workspace : str, default=None
|
|
76
|
-
The Fabric workspace name.
|
|
77
|
+
workspace : str | uuid.UUID, default=None
|
|
78
|
+
The Fabric workspace name or ID.
|
|
77
79
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
78
80
|
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
79
81
|
"""
|
|
@@ -83,31 +85,32 @@ def backup_semantic_model(
|
|
|
83
85
|
f"{icons.red_dot} The backup file for restoring must be in the .abf format."
|
|
84
86
|
)
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
89
|
+
(dataset_name, dataset_id) = resolve_dataset_name_and_id(dataset, workspace_id)
|
|
87
90
|
|
|
88
91
|
tmsl = {
|
|
89
92
|
"backup": {
|
|
90
|
-
"database":
|
|
93
|
+
"database": dataset_name,
|
|
91
94
|
"file": file_path,
|
|
92
95
|
"allowOverwrite": allow_overwrite,
|
|
93
96
|
"applyCompression": apply_compression,
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
|
|
97
|
-
fabric.execute_tmsl(script=tmsl, workspace=
|
|
100
|
+
fabric.execute_tmsl(script=tmsl, workspace=workspace_id)
|
|
98
101
|
print(
|
|
99
|
-
f"{icons.green_dot} The '{
|
|
102
|
+
f"{icons.green_dot} The '{dataset_name}' semantic model within the '{workspace_name}' workspace has been backed up to the '{file_path}' location."
|
|
100
103
|
)
|
|
101
104
|
|
|
102
105
|
|
|
103
106
|
@log
|
|
104
107
|
def restore_semantic_model(
|
|
105
|
-
dataset: str,
|
|
108
|
+
dataset: str | UUID,
|
|
106
109
|
file_path: str,
|
|
107
110
|
allow_overwrite: bool = True,
|
|
108
111
|
ignore_incompatibilities: bool = True,
|
|
109
112
|
force_restore: bool = False,
|
|
110
|
-
workspace: Optional[str] = None,
|
|
113
|
+
workspace: Optional[str | UUID] = None,
|
|
111
114
|
):
|
|
112
115
|
"""
|
|
113
116
|
`Restores <https://learn.microsoft.com/power-bi/enterprise/service-premium-backup-restore-dataset>`_ a semantic model based on a backup (.abf) file
|
|
@@ -115,8 +118,8 @@ def restore_semantic_model(
|
|
|
115
118
|
|
|
116
119
|
Parameters
|
|
117
120
|
----------
|
|
118
|
-
dataset : str
|
|
119
|
-
Name of the semantic model.
|
|
121
|
+
dataset : str | uuid.UUID
|
|
122
|
+
Name or ID of the semantic model.
|
|
120
123
|
file_path : str
|
|
121
124
|
The location in which to backup the semantic model. Must end in '.abf'.
|
|
122
125
|
Example 1: file_path = 'MyModel.abf'
|
|
@@ -127,23 +130,23 @@ def restore_semantic_model(
|
|
|
127
130
|
If True, ignores incompatibilities between Azure Analysis Services and Power BI Premium.
|
|
128
131
|
force_restore: bool, default=False
|
|
129
132
|
If True, restores the semantic model with the existing semantic model unloaded and offline.
|
|
130
|
-
workspace : str, default=None
|
|
131
|
-
The Fabric workspace name.
|
|
133
|
+
workspace : str | uuid.UUID, default=None
|
|
134
|
+
The Fabric workspace name or ID.
|
|
132
135
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
133
136
|
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
134
137
|
"""
|
|
135
|
-
# https://learn.microsoft.com/en-us/power-bi/enterprise/service-premium-backup-restore-dataset
|
|
136
138
|
|
|
137
139
|
if not file_path.endswith(".abf"):
|
|
138
140
|
raise ValueError(
|
|
139
141
|
f"{icons.red_dot} The backup file for restoring must be in the .abf format."
|
|
140
142
|
)
|
|
141
143
|
|
|
142
|
-
|
|
144
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
145
|
+
(dataset_name, dataset_id) = resolve_dataset_name_and_id(dataset, workspace_id)
|
|
143
146
|
|
|
144
147
|
tmsl = {
|
|
145
148
|
"restore": {
|
|
146
|
-
"database":
|
|
149
|
+
"database": dataset_name,
|
|
147
150
|
"file": file_path,
|
|
148
151
|
"allowOverwrite": allow_overwrite,
|
|
149
152
|
"security": "copyAll",
|
|
@@ -154,10 +157,10 @@ def restore_semantic_model(
|
|
|
154
157
|
if force_restore:
|
|
155
158
|
tmsl["restore"]["forceRestore"] = force_restore
|
|
156
159
|
|
|
157
|
-
fabric.execute_tmsl(script=tmsl, workspace=
|
|
160
|
+
fabric.execute_tmsl(script=tmsl, workspace=workspace_id)
|
|
158
161
|
|
|
159
162
|
print(
|
|
160
|
-
f"{icons.green_dot} The '{
|
|
163
|
+
f"{icons.green_dot} The '{dataset_name}' semantic model has been restored to the '{workspace_name}' workspace based on the '{file_path}' backup file."
|
|
161
164
|
)
|
|
162
165
|
|
|
163
166
|
|
|
@@ -243,15 +246,15 @@ def copy_semantic_model_backup_file(
|
|
|
243
246
|
|
|
244
247
|
|
|
245
248
|
@log
|
|
246
|
-
def list_backups(workspace: Optional[str] = None) -> pd.DataFrame:
|
|
249
|
+
def list_backups(workspace: Optional[str | UUID] = None) -> pd.DataFrame:
|
|
247
250
|
"""
|
|
248
251
|
Shows a list of backup files contained within a workspace's ADLS Gen2 storage account.
|
|
249
252
|
Requirement: An ADLS Gen2 storage account must be `connected to the workspace <https://learn.microsoft.com/power-bi/transform-model/dataflows/dataflows-azure-data-lake-storage-integration#connect-to-an-azure-data-lake-gen-2-at-a-workspace-level>`_.
|
|
250
253
|
|
|
251
254
|
Parameters
|
|
252
255
|
----------
|
|
253
|
-
workspace : str, default=None
|
|
254
|
-
The Fabric workspace name.
|
|
256
|
+
workspace : str | uuid.UUID, default=None
|
|
257
|
+
The Fabric workspace name or ID.
|
|
255
258
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
256
259
|
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
257
260
|
|
|
@@ -262,8 +265,7 @@ def list_backups(workspace: Optional[str] = None) -> pd.DataFrame:
|
|
|
262
265
|
"""
|
|
263
266
|
|
|
264
267
|
client = fabric.PowerBIRestClient()
|
|
265
|
-
|
|
266
|
-
workspace_id = fabric.resolve_workspace_id(workspace)
|
|
268
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
267
269
|
response = client.get(
|
|
268
270
|
f"/v1.0/myorg/resources?resourceType=StorageAccount&folderObjectId={workspace_id}"
|
|
269
271
|
)
|
|
@@ -274,7 +276,7 @@ def list_backups(workspace: Optional[str] = None) -> pd.DataFrame:
|
|
|
274
276
|
v = response.json().get("value", [])
|
|
275
277
|
if not v:
|
|
276
278
|
raise ValueError(
|
|
277
|
-
f"{icons.red_dot} A storage account is not associated with the '{
|
|
279
|
+
f"{icons.red_dot} A storage account is not associated with the '{workspace_name}' workspace."
|
|
278
280
|
)
|
|
279
281
|
storage_account = v[0]["resourceName"]
|
|
280
282
|
|
|
@@ -5,6 +5,7 @@ from typing import Optional
|
|
|
5
5
|
from sempy_labs._helper_functions import (
|
|
6
6
|
pagination,
|
|
7
7
|
_is_valid_uuid,
|
|
8
|
+
resolve_workspace_name_and_id,
|
|
8
9
|
)
|
|
9
10
|
from uuid import UUID
|
|
10
11
|
import sempy_labs._icons as icons
|
|
@@ -19,7 +20,7 @@ def delete_connection(connection: str | UUID):
|
|
|
19
20
|
|
|
20
21
|
Parameters
|
|
21
22
|
----------
|
|
22
|
-
connection : str | UUID
|
|
23
|
+
connection : str | uuid.UUID
|
|
23
24
|
The connection name or ID.
|
|
24
25
|
"""
|
|
25
26
|
|
|
@@ -42,9 +43,9 @@ def delete_connection_role_assignment(connection: str | UUID, role_assignment_id
|
|
|
42
43
|
|
|
43
44
|
Parameters
|
|
44
45
|
----------
|
|
45
|
-
connection : str | UUID
|
|
46
|
+
connection : str | uuid.UUID
|
|
46
47
|
The connection name or ID.
|
|
47
|
-
role_assignment_id : UUID
|
|
48
|
+
role_assignment_id : uuid.UUID
|
|
48
49
|
The role assignment ID.
|
|
49
50
|
"""
|
|
50
51
|
|
|
@@ -87,7 +88,7 @@ def list_connection_role_assignments(connection: str | UUID) -> pd.DataFrame:
|
|
|
87
88
|
|
|
88
89
|
Parameters
|
|
89
90
|
----------
|
|
90
|
-
connection : str | UUID
|
|
91
|
+
connection : str | uuid.UUID
|
|
91
92
|
The connection name or ID.
|
|
92
93
|
|
|
93
94
|
Returns
|
|
@@ -205,7 +206,7 @@ def list_connections() -> pd.DataFrame:
|
|
|
205
206
|
|
|
206
207
|
|
|
207
208
|
def list_item_connections(
|
|
208
|
-
item_name: str, item_type: str, workspace: Optional[str] = None
|
|
209
|
+
item_name: str, item_type: str, workspace: Optional[str | UUID] = None
|
|
209
210
|
) -> pd.DataFrame:
|
|
210
211
|
"""
|
|
211
212
|
Shows the list of connections that the specified item is connected to.
|
|
@@ -218,8 +219,8 @@ def list_item_connections(
|
|
|
218
219
|
The item name.
|
|
219
220
|
item_type : str
|
|
220
221
|
The `item type <https://learn.microsoft.com/rest/api/fabric/core/items/update-item?tabs=HTTP#itemtype>`_.
|
|
221
|
-
workspace : str, default=None
|
|
222
|
-
The Fabric workspace name.
|
|
222
|
+
workspace : str | uuid.UUID, default=None
|
|
223
|
+
The Fabric workspace name or ID.
|
|
223
224
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
224
225
|
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
225
226
|
|
|
@@ -229,11 +230,10 @@ def list_item_connections(
|
|
|
229
230
|
A pandas dataframe showing the list of connections that the specified item is connected to.
|
|
230
231
|
"""
|
|
231
232
|
|
|
232
|
-
|
|
233
|
-
workspace_id = fabric.resolve_workspace_id(workspace)
|
|
233
|
+
(workspace_name, workspace_id) = resolve_workspace_name_and_id(workspace)
|
|
234
234
|
item_type = item_type[0].upper() + item_type[1:]
|
|
235
235
|
item_id = fabric.resolve_item_id(
|
|
236
|
-
item_name=item_name, type=item_type, workspace=
|
|
236
|
+
item_name=item_name, type=item_type, workspace=workspace_id
|
|
237
237
|
)
|
|
238
238
|
|
|
239
239
|
client = fabric.FabricRestClient()
|
|
@@ -416,7 +416,7 @@ def create_on_prem_connection(
|
|
|
416
416
|
----------
|
|
417
417
|
name : str
|
|
418
418
|
The name of the connection.
|
|
419
|
-
gateway : str | UUID
|
|
419
|
+
gateway : str | uuid.UUID
|
|
420
420
|
The name or Id of the gateway.
|
|
421
421
|
server_name : str
|
|
422
422
|
The name of the server.
|
|
@@ -485,7 +485,7 @@ def create_vnet_connection(
|
|
|
485
485
|
user_name: str,
|
|
486
486
|
password: str,
|
|
487
487
|
privacy_level: str,
|
|
488
|
-
connection_encryption:
|
|
488
|
+
connection_encryption: str = "NotEncrypted",
|
|
489
489
|
skip_test_connection: bool = False,
|
|
490
490
|
):
|
|
491
491
|
"""
|
|
@@ -497,7 +497,7 @@ def create_vnet_connection(
|
|
|
497
497
|
----------
|
|
498
498
|
name : str
|
|
499
499
|
The name of the connection.
|
|
500
|
-
gateway : str | UUID
|
|
500
|
+
gateway : str | uuid.UUID
|
|
501
501
|
The name or Id of the gateway.
|
|
502
502
|
server_name : str
|
|
503
503
|
The name of the server.
|