semantic-link-labs 0.7.4__tar.gz → 0.8.0__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.7.4 → semantic_link_labs-0.8.0}/PKG-INFO +7 -3
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/README.md +5 -2
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/docs/requirements.txt +2 -1
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/docs/source/conf.py +1 -1
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/environment.yml +1 -1
- semantic_link_labs-0.8.0/notebooks/Capacity Migration.ipynb +1 -0
- semantic_link_labs-0.8.0/notebooks/Report Analysis.ipynb +1 -0
- semantic_link_labs-0.8.0/notebooks/SQL.ipynb +1 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/pyproject.toml +3 -2
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/semantic_link_labs.egg-info/PKG-INFO +7 -3
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/semantic_link_labs.egg-info/SOURCES.txt +12 -1
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/semantic_link_labs.egg-info/requires.txt +1 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/__init__.py +57 -18
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_capacities.py +39 -3
- semantic_link_labs-0.8.0/src/sempy_labs/_capacity_migration.py +624 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_clear_cache.py +8 -8
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_connections.py +15 -13
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_git.py +20 -21
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_helper_functions.py +33 -30
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_icons.py +19 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_list_functions.py +210 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_model_bpa.py +1 -1
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_query_scale_out.py +4 -3
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_spark.py +31 -36
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_sql.py +60 -15
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_vertipaq.py +9 -7
- semantic_link_labs-0.8.0/src/sempy_labs/admin/__init__.py +53 -0
- semantic_link_labs-0.8.0/src/sempy_labs/admin/_basic_functions.py +806 -0
- semantic_link_labs-0.8.0/src/sempy_labs/admin/_domains.py +411 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_generate_shared_expression.py +11 -14
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +14 -24
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/__init__.py +9 -6
- semantic_link_labs-0.8.0/src/sempy_labs/report/_report_bpa.py +359 -0
- semantic_link_labs-0.8.0/src/sempy_labs/report/_report_bpa_rules.py +113 -0
- semantic_link_labs-0.8.0/src/sempy_labs/report/_report_helper.py +254 -0
- semantic_link_labs-0.8.0/src/sempy_labs/report/_report_list_functions.py +95 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_report_rebind.py +0 -4
- semantic_link_labs-0.8.0/src/sempy_labs/report/_reportwrapper.py +2039 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/tom/_model.py +78 -4
- semantic_link_labs-0.7.4/notebooks/Warehouse.ipynb +0 -1
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.github/workflows/build.yaml +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.github/workflows/codeql.yaml +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.gitignore +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.readthedocs.yaml +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/.vscode/settings.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/CODE_OF_CONDUCT.md +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/LICENSE +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/SECURITY.md +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/SUPPORT.md +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/docs/Makefile +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/docs/make.bat +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/docs/source/index.rst +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/docs/source/modules.rst +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/notebooks/Migration to Direct Lake.ipynb +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/notebooks/Model Optimization.ipynb +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/notebooks/Query Scale Out.ipynb +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/notebooks/Semantic Model Refresh.ipynb +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/notebooks/Tabular Object Model.ipynb +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/setup.cfg +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_ai.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_dataflows.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_dax.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_deployment_pipelines.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_environments.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_generate_semantic_model.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_model_auto_build.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_model_bpa_bulk.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_model_bpa_rules.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_model_dependencies.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_notebooks.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_one_lake_integration.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_refresh_semantic_model.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_translations.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_workspace_identity.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/_workspaces.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/__init__.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_directlake_schema_compare.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_directlake_schema_sync.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_dl_helper.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_guardrails.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/directlake/_warm_cache.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/lakehouse/__init__.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/lakehouse/_lakehouse.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/lakehouse/_shortcuts.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/__init__.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_migration_validation.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_generate_report.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/report/_report_functions.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/sempy_labs/tom/__init__.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/tests/__init__.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/tests/test_shortcuts.py +0 -0
- {semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/tests/test_tom.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: semantic-link-labs
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -20,13 +20,14 @@ Requires-Dist: anytree
|
|
|
20
20
|
Requires-Dist: powerbiclient
|
|
21
21
|
Requires-Dist: polib
|
|
22
22
|
Requires-Dist: azure.mgmt.resource
|
|
23
|
+
Requires-Dist: jsonpath_ng
|
|
23
24
|
Provides-Extra: test
|
|
24
25
|
Requires-Dist: pytest>=8.2.1; extra == "test"
|
|
25
26
|
|
|
26
27
|
# Semantic Link Labs
|
|
27
28
|
|
|
28
29
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
29
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
30
31
|
[](https://github.com/psf/black)
|
|
31
32
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
32
33
|
|
|
@@ -50,11 +51,13 @@ If you have ideas for new features/functions, please [request a feature](https:/
|
|
|
50
51
|
## Once installed, run this code to import the library into your notebook
|
|
51
52
|
```python
|
|
52
53
|
import sempy_labs as labs
|
|
53
|
-
from sempy_labs import migration, directlake
|
|
54
|
+
from sempy_labs import migration, directlake, admin
|
|
54
55
|
from sempy_labs import lakehouse as lake
|
|
55
56
|
from sempy_labs import report as rep
|
|
56
57
|
from sempy_labs.tom import connect_semantic_model
|
|
58
|
+
from sempy_labs.report import ReportWrapper
|
|
57
59
|
from sempy_labs import ConnectWarehouse
|
|
60
|
+
from sempy_labs import ConnectLakehouse
|
|
58
61
|
```
|
|
59
62
|
|
|
60
63
|
## Load semantic-link-labs into a custom [Fabric environment](https://learn.microsoft.com/fabric/data-engineering/create-and-use-environment)
|
|
@@ -78,6 +81,7 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
78
81
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
79
82
|
|
|
80
83
|
## Version History
|
|
84
|
+
* [0.8.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.0) (September 24, 2024)
|
|
81
85
|
* [0.7.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.4) (September 16, 2024)
|
|
82
86
|
* [0.7.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.3) (September 11, 2024)
|
|
83
87
|
* [0.7.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.2) (August 30, 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
|
|
|
@@ -25,11 +25,13 @@ If you have ideas for new features/functions, please [request a feature](https:/
|
|
|
25
25
|
## Once installed, run this code to import the library into your notebook
|
|
26
26
|
```python
|
|
27
27
|
import sempy_labs as labs
|
|
28
|
-
from sempy_labs import migration, directlake
|
|
28
|
+
from sempy_labs import migration, directlake, admin
|
|
29
29
|
from sempy_labs import lakehouse as lake
|
|
30
30
|
from sempy_labs import report as rep
|
|
31
31
|
from sempy_labs.tom import connect_semantic_model
|
|
32
|
+
from sempy_labs.report import ReportWrapper
|
|
32
33
|
from sempy_labs import ConnectWarehouse
|
|
34
|
+
from sempy_labs import ConnectLakehouse
|
|
33
35
|
```
|
|
34
36
|
|
|
35
37
|
## Load semantic-link-labs into a custom [Fabric environment](https://learn.microsoft.com/fabric/data-engineering/create-and-use-environment)
|
|
@@ -53,6 +55,7 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
53
55
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
54
56
|
|
|
55
57
|
## Version History
|
|
58
|
+
* [0.8.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.0) (September 24, 2024)
|
|
56
59
|
* [0.7.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.4) (September 16, 2024)
|
|
57
60
|
* [0.7.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.3) (September 11, 2024)
|
|
58
61
|
* [0.7.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.2) (August 30, 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.
|
|
16
|
+
release = '0.8.0'
|
|
17
17
|
|
|
18
18
|
# -- General configuration ---------------------------------------------------
|
|
19
19
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"cells":[{"cell_type":"markdown","id":"5c27dfd1-4fe0-4a97-92e6-ddf78889aa93","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### Install the latest .whl package\n","\n","Check [here](https://pypi.org/project/semantic-link-labs/) to see the latest version."]},{"cell_type":"code","execution_count":null,"id":"d5cae9db-cef9-48a8-a351-9c5fcc99645c","metadata":{"jupyter":{"outputs_hidden":true,"source_hidden":false},"nteract":{"transient":{"deleting":false}}},"outputs":[],"source":["%pip install semantic-link-labs"]},{"cell_type":"markdown","id":"2856d26d","metadata":{},"source":["### Requirements\n","* Must have an Azure Subscription\n","* Must [register an App](https://ms.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)\n"," * Permissions: Will need the Contributor role at the scope where the resources will be created, which is often the subscription level\n","* Azure Key Vault\n"," * [Set up](https://learn.microsoft.com/azure/key-vault/secrets/quick-create-portal) within the Azure Subscription\n"," * Save secrets for the Tenant ID, Client ID (Application ID), Client Secret\n"," * Permissions: Ensure the user who will be executing the notebooks has “Key Vault Secrets User”\n","* Fabric Permissions\n"," * User should be a tenant admin. This ensures they have the necessary authority to execute and manage the notebooks without encountering permission issues.\n","\n","### Result\n","* F skus are created for each (specified) capacity\n"," * Within the same region as the P SKU\n"," * Equivalent SKU size as the P SKU\n"," * Same admins as listed on the P SKU\n"," * All workspaces are migrated to the corresponding new capacity\n"," * Capacity settings from the P SKU are transferred to the F SKU\n"," * Capacity settings\n"," * Notification settings\n"," * Access settings\n"," * Disaster recovery settings\n"," * Spark settings\n"," * Delegated tenant settings\n","* The names of the newly created F SKU capacities will be an alphanumeric lowercase version of the P SKU capacity name, suffixed with 'fsku'. As an example: \"My capacity_3!\" -> \"mycapacity3fsku\"."]},{"cell_type":"markdown","id":"b195eae8","metadata":{},"source":["### Import the library and set the initial parameters"]},{"cell_type":"code","execution_count":null,"id":"1344e286","metadata":{},"outputs":[],"source":["import sempy_labs as labs\n","\n","azure_subscription_id = '' # Enter your Azure subscription ID\n","key_vault_uri = '' # Enter your Azure Key Vault URI\n","key_vault_tenant_id = '' # Enter the name of the Azure Key Vault secret which stores your Tenant ID\n","key_vault_client_id = '' # Enter the name of the Azure Key Vault secret which stores your Client ID (Application ID)\n","key_vault_client_secret = '' # Enter the name of the Azure Key Vault secret which stores your Client Secret\n","resource_group = '' # Enter the name of the resource group (to be used to create the new F skus)"]},{"cell_type":"markdown","id":"5a3fe6e8-b8aa-4447-812b-7931831e07fe","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### Migrate a single P SKU -> F SKU\n","Set the 'capacities' parameter to the single P SKU."]},{"cell_type":"code","execution_count":null,"id":"3655dd88","metadata":{},"outputs":[],"source":["labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," capacities = 'CapacityA',\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"175a59b8","metadata":{},"source":["### Migrate a list of P SKUs to F SKUs\n","Set the 'capacities' parameter to a list of P SKUs."]},{"cell_type":"code","execution_count":null,"id":"3a7a80ec","metadata":{},"outputs":[],"source":["labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," capacities = ['CapacityA', 'CapacityB', 'CapacityC'],\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"30438799","metadata":{},"source":["### Migrate all P SKUs to F SKUs\n","Set the 'capacities' parameter to None."]},{"cell_type":"code","execution_count":null,"id":"315c2dc7","metadata":{},"outputs":[],"source":["labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group,\n"," capacities = None,\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"1d8e73b2","metadata":{},"source":["### Migrate a list of P SKUs to F SKUs; associate each capacity with a specific resource group\n","This process ensures that each F SKU is created within the resource group specified in the resource_group_mapping dictionary."]},{"cell_type":"code","execution_count":null,"id":"2854bf8a","metadata":{},"outputs":[],"source":["resource_group_mapping = {\n"," \"CapacityA\": \"ResourceGroupA\",\n"," \"CapacityB\": \"ResourceGroupA\",\n"," \"CapacityC\": \"ResourceGroupB\",\n","}\n","\n","labs.migrate_capacities(\n"," azure_subscription_id = azure_subscription_id,\n"," key_vault_uri = key_vault_uri,\n"," key_vault_tenant_id = key_vault_tenant_id,\n"," key_vault_client_id = key_vault_client_id,\n"," key_vault_client_secret = key_vault_client_secret,\n"," resource_group = resource_group_mapping,\n"," capacities = ['CapacityA', 'CapacityB', 'CapacityC'],\n"," p_sku_only = True,\n",")"]},{"cell_type":"markdown","id":"c3f497c8","metadata":{},"source":["### Migrate a single P SKU (already created F SKU)"]},{"cell_type":"code","execution_count":null,"id":"a4f0b5a2","metadata":{},"outputs":[],"source":["source_capacity = '' # Enter the P SKU capacity name\n","target_capacity = '' # Enter the F SKU capacity name (already exists) \n","\n","labs.migrate_workspaces(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","\n","# Optionally migrate settings\n","\"\"\"\n","labs.migrate_capacity_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_access_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_delegated_tenant_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_disaster_recovery_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_notification_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","labs.migrate_spark_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n",")\n","\"\"\""]},{"cell_type":"markdown","id":"e0db744b","metadata":{},"source":["### Migrate a list of P SKUs (already created F SKUs)"]},{"cell_type":"code","execution_count":null,"id":"0e04d519","metadata":{},"outputs":[],"source":["capacity_mapping = {\n"," \"capacitya\": \"capacityafsku\", # Format is \"P SKU\": \"F SKU\"\n"," \"capacityb\": \"capacitybfsku\",\n"," \"capacityc\": \"capacitycfsku\",\n","}\n","\n","p_skus = list(capacity_mapping.keys())\n","\n","for p_sku in p_skus:\n"," labs.migrate_workspaces(\n"," source_capacity=p_sku,\n"," target_capacity=capacity_mapping.get(p_sku)\n"," )\n"," # Optionally migrate settings\n"," \"\"\"\n"," labs.migrate_capacity_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_access_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_delegated_tenant_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_disaster_recovery_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_notification_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," labs.migrate_spark_settings(\n"," source_capacity=source_capacity, \n"," target_capacity=target_capacity\n"," )\n"," \"\"\"\n"]}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"display_name":"Synapse PySpark","language":"Python","name":"synapse_pyspark"},"language_info":{"name":"python"},"microsoft":{"language":"python"},"nteract":{"version":"nteract-front-end@1.0.0"},"spark_compute":{"compute_id":"/trident/default"},"synapse_widget":{"state":{},"version":"0.1"},"widgets":{}},"nbformat":4,"nbformat_minor":5}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"cells":[{"cell_type":"markdown","id":"5c27dfd1-4fe0-4a97-92e6-ddf78889aa93","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### Install the latest .whl package\n","\n","Check [here](https://pypi.org/project/semantic-link-labs/) to see the latest version."]},{"cell_type":"code","execution_count":null,"id":"d5cae9db-cef9-48a8-a351-9c5fcc99645c","metadata":{"jupyter":{"outputs_hidden":true,"source_hidden":false},"nteract":{"transient":{"deleting":false}}},"outputs":[],"source":["%pip install semantic-link-labs"]},{"cell_type":"markdown","id":"b195eae8","metadata":{},"source":["### Import the library and set the initial parameters"]},{"cell_type":"code","execution_count":null,"id":"1344e286","metadata":{},"outputs":[],"source":["import sempy_labs as labs\n","import sempy_labs.report as rep\n","from sempy_labs.report import ReportWrapper\n","\n","# For checking reports\n","report_name = '' # Enter the report name\n","report_workspace = None # Enter the workspace in which the report exists\n","rpt = ReportWrapper(report=report_name, workspace=report_workspace)"]},{"cell_type":"markdown","id":"4b68c027","metadata":{},"source":["### Report Best Practice Analyzer (BPA)"]},{"cell_type":"code","execution_count":null,"id":"3a596d68","metadata":{},"outputs":[],"source":["rep.run_report_bpa(report=report_name, workspace=report_workspace)"]},{"cell_type":"markdown","id":"2ac3b59a","metadata":{},"source":["#### Report BPA using custom rules"]},{"cell_type":"code","execution_count":null,"id":"bf0fe645","metadata":{},"outputs":[],"source":["import pandas as pd\n","\n","rules = pd.DataFrame(\n"," [\n"," (\n"," \"Error Prevention\",\n"," \"Semantic Model\",\n"," \"Error\",\n"," \"Fix report objects which reference invalid semantic model objects\",\n"," lambda df: df[\"Valid Semantic Model Object\"] == False,\n"," \"This rule highlights visuals, report filters, page filters or visual filters which reference an invalid semantic model object (i.e Measure/Column/Hierarchy).\",\n"," \"\",\n"," ),\n"," (\n"," \"Performance\",\n"," \"Page\",\n"," \"Warning\",\n"," \"Reduce the number of visible visuals on the page\",\n"," lambda df: df[\"Visible Visual Count\"] > 15,\n"," 'Reducing the number of visable visuals on a page will lead to faster report performance. This rule flags pages with over \" + visVisuals + \" visible visuals.',\n"," ),\n"," (\n"," \"Performance\",\n"," \"Visual\",\n"," \"Warning\",\n"," \"Reduce the number of objects within visuals\",\n"," lambda df: df[\"Visual Object Count\"] > 5,\n"," \"Reducing the number of objects (i.e. measures, columns) which are used in a visual will lead to faster report performance.\",\n"," )\n"," ],\n"," columns=[\n"," \"Category\",\n"," \"Scope\",\n"," \"Severity\",\n"," \"Rule Name\",\n"," \"Expression\",\n"," \"Description\",\n"," \"URL\",\n"," ],\n",")\n","\n","rep.run_report_bpa(report=report_name, workspace=report_workspace, rules=rules)"]},{"cell_type":"markdown","id":"5a3fe6e8-b8aa-4447-812b-7931831e07fe","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### View all semantic model objects within a report"]},{"cell_type":"code","execution_count":null,"id":"9e349954","metadata":{},"outputs":[],"source":["rpt.list_semantic_model_objects()"]},{"cell_type":"markdown","id":"9efe783e","metadata":{},"source":["#### View broken report objects (if any semantic model objects used in the report do not exist within the semantic model)\n","The 'Valid Object' column indicates if the object (measure/column/hierarchy) exists within the semantic model used by the report"]},{"cell_type":"code","execution_count":null,"id":"a7480602","metadata":{},"outputs":[],"source":["rpt.list_semantic_model_objects(extended=True)"]},{"cell_type":"markdown","id":"5fab7ef7","metadata":{},"source":["#### View broken report objects across all reports tied to a semantic model"]},{"cell_type":"code","execution_count":null,"id":"34f1d9a6","metadata":{},"outputs":[],"source":["dataset_name = '' # Enter the semantic model name\n","dataset_workspace = None # Enter the workspace name in which the semantic model exists (if set to None it will use the workspace in which the notebook is running)\n","labs.list_report_semantic_model_objects(dataset=dataset_name, workspace=dataset_workspace, extended=True)"]},{"cell_type":"markdown","id":"26acd665","metadata":{},"source":["### List functions within the ReportWrapper"]},{"cell_type":"code","execution_count":null,"id":"9c2c206a","metadata":{},"outputs":[],"source":["rpt.list_custom_visuals()"]},{"cell_type":"code","execution_count":null,"id":"22647267","metadata":{},"outputs":[],"source":["rpt.list_pages()"]},{"cell_type":"code","execution_count":null,"id":"493fb104","metadata":{},"outputs":[],"source":["rpt.list_visuals()"]},{"cell_type":"code","execution_count":null,"id":"1ef9a9ac","metadata":{},"outputs":[],"source":["rpt.list_visual_objects()"]},{"cell_type":"code","execution_count":null,"id":"ad00499c","metadata":{},"outputs":[],"source":["rpt.list_report_filters()"]},{"cell_type":"code","execution_count":null,"id":"c0f02a49","metadata":{},"outputs":[],"source":["rpt.list_page_filters()"]},{"cell_type":"code","execution_count":null,"id":"4cf8d12f","metadata":{},"outputs":[],"source":["rpt.list_visual_filters()"]},{"cell_type":"code","execution_count":null,"id":"3b5e9c16","metadata":{},"outputs":[],"source":["rpt.list_report_level_measures()"]},{"cell_type":"code","execution_count":null,"id":"9f420f57","metadata":{},"outputs":[],"source":["rpt.list_visual_interactions()"]},{"cell_type":"code","execution_count":null,"id":"198afff0","metadata":{},"outputs":[],"source":["rpt.list_bookmarks()"]},{"cell_type":"markdown","id":"f3ee5962","metadata":{},"source":["### Perform actions on a report\n","Set a custom theme for a report based on a Power BI theme file"]},{"cell_type":"code","execution_count":null,"id":"ec1a7d1b","metadata":{},"outputs":[],"source":["rpt.set_theme(theme_file_path='/lakehouse/default/Files/CY23SU09.json')"]},{"cell_type":"code","execution_count":null,"id":"b1203067","metadata":{},"outputs":[],"source":["rpt.set_theme(theme_file_path='https://raw.githubusercontent.com/PowerBiDevCamp/FabricUserApiDemo/main/FabricUserApiDemo/DefinitionTemplates/Shared/Reports/StaticResources/SharedResources/BaseThemes/CY23SU08.json')"]},{"cell_type":"markdown","id":"9b230f9f","metadata":{},"source":["Set whether a Power BI report page is hidden or visible"]},{"cell_type":"code","execution_count":null,"id":"8ce57483","metadata":{},"outputs":[],"source":["rpt.set_page_visibility(page_name='Page 1', hidden=True)"]},{"cell_type":"markdown","id":"ef3e4c02","metadata":{},"source":["Set the active page (page shown upon opening the report)"]},{"cell_type":"code","execution_count":null,"id":"024d4111","metadata":{},"outputs":[],"source":["rpt.set_active_page(page_name='Page 2')"]},{"cell_type":"markdown","id":"f96511ac","metadata":{},"source":["Disable the 'show items with no data' for all visuals within a Power BI report"]},{"cell_type":"code","execution_count":null,"id":"65bf38fe","metadata":{},"outputs":[],"source":["rpt.disable_show_items_with_no_data()"]},{"cell_type":"markdown","id":"ddee3565","metadata":{},"source":["Remove all custom visuals in a Power BI report which are not used in any visuals within the report"]},{"cell_type":"code","execution_count":null,"id":"9aba1564","metadata":{},"outputs":[],"source":["rpt.remove_unnecessary_custom_visuals()"]},{"cell_type":"markdown","id":"5342423f","metadata":{},"source":["Hide all pages which are used for a tooltip or drillthrough"]},{"cell_type":"code","execution_count":null,"id":"b9045cbb","metadata":{},"outputs":[],"source":["rpt.hide_tooltip_drillthrough_pages()"]}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"display_name":"Synapse PySpark","language":"Python","name":"synapse_pyspark"},"language_info":{"name":"python"},"microsoft":{"language":"python"},"nteract":{"version":"nteract-front-end@1.0.0"},"spark_compute":{"compute_id":"/trident/default"},"synapse_widget":{"state":{},"version":"0.1"},"widgets":{}},"nbformat":4,"nbformat_minor":5}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"cells":[{"cell_type":"markdown","id":"5c27dfd1-4fe0-4a97-92e6-ddf78889aa93","metadata":{"nteract":{"transient":{"deleting":false}}},"source":["### Install the latest .whl package\n","\n","Check [here](https://pypi.org/project/semantic-link-labs/) to see the latest version."]},{"cell_type":"code","execution_count":null,"id":"d5cae9db-cef9-48a8-a351-9c5fcc99645c","metadata":{"jupyter":{"outputs_hidden":true,"source_hidden":false},"nteract":{"transient":{"deleting":false}}},"outputs":[],"source":["%pip install semantic-link-labs"]},{"cell_type":"markdown","id":"b195eae8","metadata":{},"source":["### Import the library and necessary packages"]},{"cell_type":"code","execution_count":null,"id":"1344e286","metadata":{},"outputs":[],"source":["import sempy_labs as labs\n","from sempy_labs import ConnectWarehouse\n","from sempy_labs import ConnectLakehouse\n","\n","lakehouse_name = ''\n","lakehouse_workspace_name = ''\n","warehouse_name = ''\n","warehouse_workspace_name = ''"]},{"cell_type":"markdown","id":"55e5ca67","metadata":{},"source":["### Run a SQL query (or queries) against a Fabric warehouse"]},{"cell_type":"code","execution_count":null,"id":"a9f984e9","metadata":{},"outputs":[],"source":["with ConnectWarehouse(warehouse=warehouse_name, workspace=warehouse_workspace_name) as sql:\n"," df = sql.query(\"SELECT * FROM Product\")\n"," display(df)"]},{"cell_type":"code","execution_count":null,"id":"865ac4a1","metadata":{},"outputs":[],"source":["with ConnectWarehouse(warehouse=warehouse_name, workspace=warehouse_workspace_name) as sql:\n"," dfs = sql.query([\"SELECT * FROM Product\", \"SELECT DISTINCT [Category] FROM Product\"])\n","\n","for df in dfs:\n"," display(df)"]},{"cell_type":"markdown","id":"634700c3","metadata":{},"source":["### Run a T-SQL query (or queries) against a Fabric warehouse"]},{"cell_type":"code","execution_count":null,"id":"5dbf34f3","metadata":{},"outputs":[],"source":["with ConnectWarehouse(warehouse=warehouse_name, workspace=warehouse_workspace_name) as sql:\n"," sql.query(\"CREATE SCHEMA [Business]\")"]},{"cell_type":"code","execution_count":null,"id":"ec8ddb81","metadata":{},"outputs":[],"source":["with ConnectWarehouse(warehouse=warehouse_name, workspace=warehouse_workspace_name) as sql:\n"," sql.query([\"CREATE SCHEMA [Business]\", \"CREATE SCHEMA [Marketing]\"])"]},{"cell_type":"markdown","id":"d5b090da","metadata":{},"source":["### Run a SQL query (or queries) against a Fabric lakehouse"]},{"cell_type":"code","execution_count":null,"id":"4dca7f4a","metadata":{},"outputs":[],"source":["with ConnectLakehouse(lakehouse=lakehouse_name, workspace=lakehouse_workspace_name) as sql:\n"," df = sql.query(\"SELECT * FROM Product\")\n"," display(df)"]},{"cell_type":"code","execution_count":null,"id":"b9606ae8","metadata":{},"outputs":[],"source":["with ConnectLakehouse(lakehouse=lakehouse_name, workspace=lakehouse_workspace_name) as sql:\n"," dfs = sql.query([\"SELECT * FROM Product\", \"SELECT DISTINCT [Category] FROM Product\"])\n","\n","for df in dfs:\n"," display(df)"]}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"display_name":"Synapse PySpark","language":"Python","name":"synapse_pyspark"},"language_info":{"name":"python"},"microsoft":{"language":"python"},"nteract":{"version":"nteract-front-end@1.0.0"},"spark_compute":{"compute_id":"/trident/default"},"synapse_widget":{"state":{},"version":"0.1"},"widgets":{}},"nbformat":4,"nbformat_minor":5}
|
|
@@ -7,7 +7,7 @@ name="semantic-link-labs"
|
|
|
7
7
|
authors = [
|
|
8
8
|
{ name = "Microsoft Corporation" },
|
|
9
9
|
]
|
|
10
|
-
version="0.
|
|
10
|
+
version="0.8.0"
|
|
11
11
|
description="Semantic Link Labs for Microsoft Fabric"
|
|
12
12
|
readme="README.md"
|
|
13
13
|
requires-python=">=3.10,<3.12"
|
|
@@ -28,6 +28,7 @@ dependencies = [
|
|
|
28
28
|
"powerbiclient",
|
|
29
29
|
"polib",
|
|
30
30
|
"azure.mgmt.resource",
|
|
31
|
+
"jsonpath_ng",
|
|
31
32
|
]
|
|
32
33
|
|
|
33
34
|
[tool.setuptools.packages.find]
|
|
@@ -45,7 +46,7 @@ test = [
|
|
|
45
46
|
Repository = "https://github.com/microsoft/semantic-link-labs.git"
|
|
46
47
|
|
|
47
48
|
[[tool.mypy.overrides]]
|
|
48
|
-
module = "sempy.*,Microsoft.*,System.*,anytree.*,powerbiclient.*,synapse.ml.services.*,polib.*,azure.mgmt.resource.*"
|
|
49
|
+
module = "sempy.*,Microsoft.*,System.*,anytree.*,powerbiclient.*,synapse.ml.services.*,polib.*,azure.mgmt.resource.*,jsonpath_ng.*"
|
|
49
50
|
ignore_missing_imports = true
|
|
50
51
|
|
|
51
52
|
[tool.flake8]
|
{semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/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.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Semantic Link Labs for Microsoft Fabric
|
|
5
5
|
Author: Microsoft Corporation
|
|
6
6
|
License: MIT License
|
|
@@ -20,13 +20,14 @@ Requires-Dist: anytree
|
|
|
20
20
|
Requires-Dist: powerbiclient
|
|
21
21
|
Requires-Dist: polib
|
|
22
22
|
Requires-Dist: azure.mgmt.resource
|
|
23
|
+
Requires-Dist: jsonpath_ng
|
|
23
24
|
Provides-Extra: test
|
|
24
25
|
Requires-Dist: pytest>=8.2.1; extra == "test"
|
|
25
26
|
|
|
26
27
|
# Semantic Link Labs
|
|
27
28
|
|
|
28
29
|
[](https://badge.fury.io/py/semantic-link-labs)
|
|
29
|
-
[](https://readthedocs.org/projects/semantic-link-labs/)
|
|
30
31
|
[](https://github.com/psf/black)
|
|
31
32
|
[](https://pepy.tech/project/semantic-link-labs)
|
|
32
33
|
|
|
@@ -50,11 +51,13 @@ If you have ideas for new features/functions, please [request a feature](https:/
|
|
|
50
51
|
## Once installed, run this code to import the library into your notebook
|
|
51
52
|
```python
|
|
52
53
|
import sempy_labs as labs
|
|
53
|
-
from sempy_labs import migration, directlake
|
|
54
|
+
from sempy_labs import migration, directlake, admin
|
|
54
55
|
from sempy_labs import lakehouse as lake
|
|
55
56
|
from sempy_labs import report as rep
|
|
56
57
|
from sempy_labs.tom import connect_semantic_model
|
|
58
|
+
from sempy_labs.report import ReportWrapper
|
|
57
59
|
from sempy_labs import ConnectWarehouse
|
|
60
|
+
from sempy_labs import ConnectLakehouse
|
|
58
61
|
```
|
|
59
62
|
|
|
60
63
|
## Load semantic-link-labs into a custom [Fabric environment](https://learn.microsoft.com/fabric/data-engineering/create-and-use-environment)
|
|
@@ -78,6 +81,7 @@ An even better way to ensure the semantic-link-labs library is available in your
|
|
|
78
81
|
2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
|
|
79
82
|
|
|
80
83
|
## Version History
|
|
84
|
+
* [0.8.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.0) (September 24, 2024)
|
|
81
85
|
* [0.7.4](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.4) (September 16, 2024)
|
|
82
86
|
* [0.7.3](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.3) (September 11, 2024)
|
|
83
87
|
* [0.7.2](https://github.com/microsoft/semantic-link-labs/releases/tag/0.7.2) (August 30, 2024)
|
{semantic_link_labs-0.7.4 → semantic_link_labs-0.8.0}/src/semantic_link_labs.egg-info/SOURCES.txt
RENAMED
|
@@ -20,12 +20,14 @@ docs/source/conf.py
|
|
|
20
20
|
docs/source/index.rst
|
|
21
21
|
docs/source/modules.rst
|
|
22
22
|
notebooks/Best Practice Analyzer Report.ipynb
|
|
23
|
+
notebooks/Capacity Migration.ipynb
|
|
23
24
|
notebooks/Migration to Direct Lake.ipynb
|
|
24
25
|
notebooks/Model Optimization.ipynb
|
|
25
26
|
notebooks/Query Scale Out.ipynb
|
|
27
|
+
notebooks/Report Analysis.ipynb
|
|
28
|
+
notebooks/SQL.ipynb
|
|
26
29
|
notebooks/Semantic Model Refresh.ipynb
|
|
27
30
|
notebooks/Tabular Object Model.ipynb
|
|
28
|
-
notebooks/Warehouse.ipynb
|
|
29
31
|
src/semantic_link_labs.egg-info/PKG-INFO
|
|
30
32
|
src/semantic_link_labs.egg-info/SOURCES.txt
|
|
31
33
|
src/semantic_link_labs.egg-info/dependency_links.txt
|
|
@@ -34,6 +36,7 @@ src/semantic_link_labs.egg-info/top_level.txt
|
|
|
34
36
|
src/sempy_labs/__init__.py
|
|
35
37
|
src/sempy_labs/_ai.py
|
|
36
38
|
src/sempy_labs/_capacities.py
|
|
39
|
+
src/sempy_labs/_capacity_migration.py
|
|
37
40
|
src/sempy_labs/_clear_cache.py
|
|
38
41
|
src/sempy_labs/_connections.py
|
|
39
42
|
src/sempy_labs/_dataflows.py
|
|
@@ -98,6 +101,9 @@ src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po
|
|
|
98
101
|
src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po
|
|
99
102
|
src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po
|
|
100
103
|
src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po
|
|
104
|
+
src/sempy_labs/admin/__init__.py
|
|
105
|
+
src/sempy_labs/admin/_basic_functions.py
|
|
106
|
+
src/sempy_labs/admin/_domains.py
|
|
101
107
|
src/sempy_labs/directlake/__init__.py
|
|
102
108
|
src/sempy_labs/directlake/_directlake_schema_compare.py
|
|
103
109
|
src/sempy_labs/directlake/_directlake_schema_sync.py
|
|
@@ -127,8 +133,13 @@ src/sempy_labs/migration/_refresh_calc_tables.py
|
|
|
127
133
|
src/sempy_labs/report/_BPAReportTemplate.json
|
|
128
134
|
src/sempy_labs/report/__init__.py
|
|
129
135
|
src/sempy_labs/report/_generate_report.py
|
|
136
|
+
src/sempy_labs/report/_report_bpa.py
|
|
137
|
+
src/sempy_labs/report/_report_bpa_rules.py
|
|
130
138
|
src/sempy_labs/report/_report_functions.py
|
|
139
|
+
src/sempy_labs/report/_report_helper.py
|
|
140
|
+
src/sempy_labs/report/_report_list_functions.py
|
|
131
141
|
src/sempy_labs/report/_report_rebind.py
|
|
142
|
+
src/sempy_labs/report/_reportwrapper.py
|
|
132
143
|
src/sempy_labs/report/_bpareporttemplate/.platform
|
|
133
144
|
src/sempy_labs/report/_bpareporttemplate/definition.pbir
|
|
134
145
|
src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json
|
|
@@ -3,6 +3,36 @@ from sempy_labs._environments import (
|
|
|
3
3
|
delete_environment,
|
|
4
4
|
publish_environment,
|
|
5
5
|
)
|
|
6
|
+
from sempy_labs._clear_cache import (
|
|
7
|
+
clear_cache,
|
|
8
|
+
backup_semantic_model,
|
|
9
|
+
restore_semantic_model,
|
|
10
|
+
copy_semantic_model_backup_file,
|
|
11
|
+
list_backups,
|
|
12
|
+
list_storage_account_files,
|
|
13
|
+
)
|
|
14
|
+
from sempy_labs._capacity_migration import (
|
|
15
|
+
migrate_spark_settings,
|
|
16
|
+
migrate_workspaces,
|
|
17
|
+
migrate_capacities,
|
|
18
|
+
migrate_notification_settings,
|
|
19
|
+
migrate_access_settings,
|
|
20
|
+
migrate_delegated_tenant_settings,
|
|
21
|
+
migrate_capacity_settings,
|
|
22
|
+
migrate_disaster_recovery_settings,
|
|
23
|
+
)
|
|
24
|
+
from sempy_labs._capacities import (
|
|
25
|
+
create_fabric_capacity,
|
|
26
|
+
# get_capacity_resource_governance,
|
|
27
|
+
# list_vcores,
|
|
28
|
+
resume_fabric_capacity,
|
|
29
|
+
suspend_fabric_capacity,
|
|
30
|
+
update_fabric_capacity,
|
|
31
|
+
delete_fabric_capacity,
|
|
32
|
+
check_fabric_capacity_name_availablility,
|
|
33
|
+
delete_embedded_capacity,
|
|
34
|
+
delete_premium_capacity,
|
|
35
|
+
)
|
|
6
36
|
|
|
7
37
|
from sempy_labs._spark import (
|
|
8
38
|
get_spark_settings,
|
|
@@ -28,16 +58,7 @@ from sempy_labs._notebooks import (
|
|
|
28
58
|
)
|
|
29
59
|
from sempy_labs._sql import (
|
|
30
60
|
ConnectWarehouse,
|
|
31
|
-
|
|
32
|
-
from sempy_labs._capacities import (
|
|
33
|
-
check_fabric_capacity_name_availablility,
|
|
34
|
-
delete_fabric_capacity,
|
|
35
|
-
resume_fabric_capacity,
|
|
36
|
-
update_fabric_capacity,
|
|
37
|
-
create_fabric_capacity,
|
|
38
|
-
delete_premium_capacity,
|
|
39
|
-
suspend_fabric_capacity,
|
|
40
|
-
delete_embedded_capacity,
|
|
61
|
+
ConnectLakehouse,
|
|
41
62
|
)
|
|
42
63
|
from sempy_labs._workspace_identity import (
|
|
43
64
|
provision_workspace_identity,
|
|
@@ -62,14 +83,6 @@ from sempy_labs._dataflows import (
|
|
|
62
83
|
assign_workspace_to_dataflow_storage,
|
|
63
84
|
list_dataflows,
|
|
64
85
|
)
|
|
65
|
-
from sempy_labs._clear_cache import (
|
|
66
|
-
clear_cache,
|
|
67
|
-
backup_semantic_model,
|
|
68
|
-
restore_semantic_model,
|
|
69
|
-
copy_semantic_model_backup_file,
|
|
70
|
-
list_backups,
|
|
71
|
-
list_storage_account_files,
|
|
72
|
-
)
|
|
73
86
|
from sempy_labs._connections import (
|
|
74
87
|
list_connections,
|
|
75
88
|
list_item_connections,
|
|
@@ -88,6 +101,8 @@ from sempy_labs._generate_semantic_model import (
|
|
|
88
101
|
)
|
|
89
102
|
from sempy_labs._list_functions import (
|
|
90
103
|
list_reports_using_semantic_model,
|
|
104
|
+
list_semantic_model_object_report_usage,
|
|
105
|
+
list_report_semantic_model_objects,
|
|
91
106
|
list_semantic_model_objects,
|
|
92
107
|
list_shortcuts,
|
|
93
108
|
get_object_level_security,
|
|
@@ -116,6 +131,7 @@ from sempy_labs._helper_functions import (
|
|
|
116
131
|
resolve_environment_id,
|
|
117
132
|
resolve_capacity_id,
|
|
118
133
|
resolve_warehouse_id,
|
|
134
|
+
resolve_dataset_from_report,
|
|
119
135
|
resolve_workspace_capacity,
|
|
120
136
|
create_abfss_path,
|
|
121
137
|
format_dax_object_name,
|
|
@@ -175,6 +191,7 @@ from sempy_labs._vertipaq import (
|
|
|
175
191
|
__all__ = [
|
|
176
192
|
"resolve_warehouse_id",
|
|
177
193
|
"ConnectWarehouse",
|
|
194
|
+
"ConnectLakehouse",
|
|
178
195
|
"update_semantic_model_from_bim",
|
|
179
196
|
"list_connections",
|
|
180
197
|
"get_semantic_model_size",
|
|
@@ -186,6 +203,10 @@ __all__ = [
|
|
|
186
203
|
"list_storage_account_files",
|
|
187
204
|
"backup_semantic_model",
|
|
188
205
|
"restore_semantic_model",
|
|
206
|
+
"list_semantic_model_object_report_usage",
|
|
207
|
+
"list_report_semantic_model_objects",
|
|
208
|
+
"migrate_spark_settings",
|
|
209
|
+
"create_azure_storage_account",
|
|
189
210
|
"delete_custom_pool",
|
|
190
211
|
"clear_cache",
|
|
191
212
|
# create_connection_cloud,
|
|
@@ -301,4 +322,22 @@ __all__ = [
|
|
|
301
322
|
"delete_premium_capacity",
|
|
302
323
|
"suspend_fabric_capacity",
|
|
303
324
|
"delete_embedded_capacity",
|
|
325
|
+
"resolve_dataset_from_report",
|
|
326
|
+
"migrate_workspaces",
|
|
327
|
+
"migrate_capacities",
|
|
328
|
+
"create_fabric_capacity",
|
|
329
|
+
"migrate_capacity_settings",
|
|
330
|
+
# "get_capacity_resource_governance",
|
|
331
|
+
# "list_vcores",
|
|
332
|
+
"migrate_disaster_recovery_settings",
|
|
333
|
+
"migrate_notification_settings",
|
|
334
|
+
"migrate_access_settings",
|
|
335
|
+
"migrate_delegated_tenant_settings",
|
|
336
|
+
"resume_fabric_capacity",
|
|
337
|
+
"suspend_fabric_capacity",
|
|
338
|
+
"update_fabric_capacity",
|
|
339
|
+
"delete_fabric_capacity",
|
|
340
|
+
"check_fabric_capacity_name_availablility",
|
|
341
|
+
"delete_embedded_capacity",
|
|
342
|
+
"delete_premium_capacity",
|
|
304
343
|
]
|
|
@@ -5,6 +5,7 @@ import sempy_labs._icons as icons
|
|
|
5
5
|
from sempy.fabric.exceptions import FabricHTTPException
|
|
6
6
|
import requests
|
|
7
7
|
from sempy_labs._helper_functions import get_azure_token_credentials
|
|
8
|
+
import pandas as pd
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
def _add_sll_tag(payload, tags):
|
|
@@ -155,10 +156,10 @@ def create_fabric_capacity(
|
|
|
155
156
|
for i in resource_client.resources.list(
|
|
156
157
|
"resourceType eq 'Microsoft.PowerBIDedicated/capacities'"
|
|
157
158
|
):
|
|
158
|
-
if i.name == capacity_name.removesuffix(
|
|
159
|
+
if i.name == capacity_name.removesuffix(icons.migrate_capacity_suffix):
|
|
159
160
|
resource_group = i.id.split("/")[4]
|
|
160
161
|
print(
|
|
161
|
-
f"{icons.yellow_dot} Override resource group flag detected for A SKUs - using the existing resource group '{resource_group}' for
|
|
162
|
+
f"{icons.yellow_dot} Override resource group flag detected for A SKUs - using the existing resource group '{resource_group}' for the '{capacity_name}' capacity."
|
|
162
163
|
)
|
|
163
164
|
else:
|
|
164
165
|
# Attempt to get the resource group
|
|
@@ -207,6 +208,41 @@ def create_fabric_capacity(
|
|
|
207
208
|
)
|
|
208
209
|
|
|
209
210
|
|
|
211
|
+
def list_vcores() -> pd.DataFrame:
|
|
212
|
+
|
|
213
|
+
df = pd.DataFrame(columns=["Total Purchased Cores", "Available Cores"])
|
|
214
|
+
|
|
215
|
+
client = fabric.PowerBIRestClient()
|
|
216
|
+
response = client.get("capacities/vcores")
|
|
217
|
+
if response.status_code != 200:
|
|
218
|
+
FabricHTTPException(response)
|
|
219
|
+
response_json = response.json()
|
|
220
|
+
new_data = {
|
|
221
|
+
"Total Purchased Cores": response_json.get("totalPurchasedCores"),
|
|
222
|
+
"Available Cores": response_json.get("availableCores"),
|
|
223
|
+
}
|
|
224
|
+
df = pd.concat([df, pd.DataFrame(new_data, index=[0])], ignore_index=True)
|
|
225
|
+
|
|
226
|
+
int_cols = ["Total Purchased Cores", "Available Cores"]
|
|
227
|
+
df[int_cols] = df[int_cols].astype(int)
|
|
228
|
+
|
|
229
|
+
return df
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def get_capacity_resource_governance(capacity_name: str):
|
|
233
|
+
|
|
234
|
+
dfC = fabric.list_capacities()
|
|
235
|
+
dfC_filt = dfC[dfC["Display Name"] == capacity_name]
|
|
236
|
+
capacity_id = dfC_filt["Id"].iloc[0].upper()
|
|
237
|
+
client = fabric.PowerBIRestClient()
|
|
238
|
+
response = client.get(f"capacities/{capacity_id}/resourceGovernance")
|
|
239
|
+
|
|
240
|
+
if response.status_code != 200:
|
|
241
|
+
FabricHTTPException(response)
|
|
242
|
+
|
|
243
|
+
return response.json()["workloadSettings"]
|
|
244
|
+
|
|
245
|
+
|
|
210
246
|
def suspend_fabric_capacity(
|
|
211
247
|
capacity_name: str,
|
|
212
248
|
azure_subscription_id: str,
|
|
@@ -375,7 +411,7 @@ def delete_premium_capacity(capacity_name: str):
|
|
|
375
411
|
client = fabric.FabricRestClient()
|
|
376
412
|
response = client.delete(f"capacities/{capacity_id}")
|
|
377
413
|
|
|
378
|
-
if response.status_code !=
|
|
414
|
+
if response.status_code != 204:
|
|
379
415
|
raise FabricHTTPException(response)
|
|
380
416
|
|
|
381
417
|
print(f"{icons.green_dot} The '{capacity_name}' capacity has been deleted.")
|