semantic-link-labs 0.8.11__tar.gz → 0.9.1__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.

Files changed (208) hide show
  1. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.github/workflows/build.yaml +6 -0
  2. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/PKG-INFO +9 -6
  3. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/README.md +6 -2
  4. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/docs/requirements.txt +0 -1
  5. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/docs/source/conf.py +1 -1
  6. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/environment.yml +1 -1
  7. semantic_link_labs-0.9.1/notebooks/Capacity Migration.ipynb +340 -0
  8. semantic_link_labs-0.9.1/notebooks/Semantic Model Management.ipynb +144 -0
  9. semantic_link_labs-0.9.1/notebooks/Service Principal.ipynb +222 -0
  10. semantic_link_labs-0.9.1/notebooks/Tabular Object Model.ipynb +786 -0
  11. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/pyproject.toml +3 -4
  12. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/semantic_link_labs.egg-info/PKG-INFO +9 -6
  13. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/semantic_link_labs.egg-info/SOURCES.txt +2 -0
  14. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/semantic_link_labs.egg-info/requires.txt +1 -2
  15. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/__init__.py +29 -2
  16. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_authentication.py +78 -4
  17. semantic_link_labs-0.9.1/src/sempy_labs/_capacities.py +1260 -0
  18. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_capacity_migration.py +7 -37
  19. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_clear_cache.py +8 -8
  20. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_deployment_pipelines.py +1 -1
  21. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_gateways.py +2 -0
  22. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_generate_semantic_model.py +8 -0
  23. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_helper_functions.py +119 -79
  24. semantic_link_labs-0.9.1/src/sempy_labs/_job_scheduler.py +227 -0
  25. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_list_functions.py +40 -31
  26. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_model_bpa.py +207 -204
  27. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_model_bpa_bulk.py +2 -2
  28. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_model_bpa_rules.py +3 -3
  29. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_notebooks.py +2 -0
  30. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_query_scale_out.py +8 -0
  31. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_sql.py +11 -7
  32. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_vertipaq.py +4 -2
  33. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_warehouses.py +6 -6
  34. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/_basic_functions.py +156 -103
  35. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/_domains.py +7 -2
  36. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/_git.py +4 -1
  37. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/_items.py +7 -2
  38. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/_scanner.py +7 -4
  39. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_directlake_schema_compare.py +7 -2
  40. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_directlake_schema_sync.py +6 -0
  41. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_dl_helper.py +51 -31
  42. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_get_directlake_lakehouse.py +20 -27
  43. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_update_directlake_partition_entity.py +5 -0
  44. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/lakehouse/_get_lakehouse_columns.py +17 -22
  45. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/lakehouse/_get_lakehouse_tables.py +20 -32
  46. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/lakehouse/_lakehouse.py +2 -19
  47. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_generate_report.py +45 -0
  48. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_report_bpa.py +2 -2
  49. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/tom/_model.py +97 -16
  50. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/tests/test_tom.py +2 -0
  51. semantic_link_labs-0.8.11/notebooks/Capacity Migration.ipynb +0 -1
  52. semantic_link_labs-0.8.11/notebooks/Tabular Object Model.ipynb +0 -1
  53. semantic_link_labs-0.8.11/src/sempy_labs/_capacities.py +0 -690
  54. semantic_link_labs-0.8.11/src/sempy_labs/_job_scheduler.py +0 -92
  55. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  56. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  57. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.github/ISSUE_TEMPLATE/issue--question---advice-needed.md +0 -0
  58. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.github/workflows/codeql.yaml +0 -0
  59. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.gitignore +0 -0
  60. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.readthedocs.yaml +0 -0
  61. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/.vscode/settings.json +0 -0
  62. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/CODE_OF_CONDUCT.md +0 -0
  63. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/LICENSE +0 -0
  64. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/SECURITY.md +0 -0
  65. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/SUPPORT.md +0 -0
  66. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/docs/Makefile +0 -0
  67. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/docs/make.bat +0 -0
  68. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/docs/source/index.rst +0 -0
  69. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/docs/source/modules.rst +0 -0
  70. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/Best Practice Analyzer Report.ipynb +0 -0
  71. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/Migration to Direct Lake.ipynb +0 -0
  72. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/Model Optimization.ipynb +0 -0
  73. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/Query Scale Out.ipynb +0 -0
  74. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/Report Analysis.ipynb +0 -0
  75. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/SQL.ipynb +0 -0
  76. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/notebooks/Semantic Model Refresh.ipynb +0 -0
  77. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/setup.cfg +0 -0
  78. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/semantic_link_labs.egg-info/dependency_links.txt +0 -0
  79. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/semantic_link_labs.egg-info/top_level.txt +0 -0
  80. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_ai.py +0 -0
  81. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_am-ET.po +0 -0
  82. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ar-AE.po +0 -0
  83. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +0 -0
  84. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +0 -0
  85. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_cs-CZ.po +0 -0
  86. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_da-DK.po +0 -0
  87. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_de-DE.po +0 -0
  88. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_el-GR.po +0 -0
  89. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_es-ES.po +0 -0
  90. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_fa-IR.po +0 -0
  91. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +0 -0
  92. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_fr-FR.po +0 -0
  93. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ga-IE.po +0 -0
  94. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_he-IL.po +0 -0
  95. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_hi-IN.po +0 -0
  96. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_hu-HU.po +0 -0
  97. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_id-ID.po +0 -0
  98. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_is-IS.po +0 -0
  99. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_it-IT.po +0 -0
  100. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ja-JP.po +0 -0
  101. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +0 -0
  102. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +0 -0
  103. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_nl-NL.po +0 -0
  104. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_pl-PL.po +0 -0
  105. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_pt-BR.po +0 -0
  106. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_pt-PT.po +0 -0
  107. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +0 -0
  108. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ru-RU.po +0 -0
  109. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +0 -0
  110. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +0 -0
  111. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +0 -0
  112. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_ta-IN.po +0 -0
  113. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_te-IN.po +0 -0
  114. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_th-TH.po +0 -0
  115. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +0 -0
  116. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +0 -0
  117. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_zh-CN.po +0 -0
  118. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_bpa_translation/_model/_translations_zu-ZA.po +0 -0
  119. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_connections.py +0 -0
  120. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_data_pipelines.py +0 -0
  121. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_dataflows.py +0 -0
  122. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_dax.py +0 -0
  123. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_documentation.py +0 -0
  124. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_environments.py +0 -0
  125. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_eventhouses.py +0 -0
  126. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_eventstreams.py +0 -0
  127. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_external_data_shares.py +0 -0
  128. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_git.py +0 -0
  129. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_icons.py +0 -0
  130. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_kql_databases.py +0 -0
  131. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_kql_querysets.py +0 -0
  132. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_managed_private_endpoints.py +0 -0
  133. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_mirrored_databases.py +0 -0
  134. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_mirrored_warehouses.py +0 -0
  135. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_ml_experiments.py +0 -0
  136. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_ml_models.py +0 -0
  137. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_model_auto_build.py +0 -0
  138. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_model_dependencies.py +0 -0
  139. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_one_lake_integration.py +0 -0
  140. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_refresh_semantic_model.py +0 -0
  141. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_spark.py +0 -0
  142. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_translations.py +0 -0
  143. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_workloads.py +0 -0
  144. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_workspace_identity.py +0 -0
  145. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/_workspaces.py +0 -0
  146. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/__init__.py +0 -0
  147. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/admin/_external_data_share.py +0 -0
  148. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/__init__.py +0 -0
  149. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_generate_shared_expression.py +0 -0
  150. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_get_shared_expression.py +0 -0
  151. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_guardrails.py +0 -0
  152. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_list_directlake_model_calc_tables.py +0 -0
  153. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_show_unsupported_directlake_objects.py +0 -0
  154. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py +0 -0
  155. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/directlake/_warm_cache.py +0 -0
  156. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/lakehouse/__init__.py +0 -0
  157. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/lakehouse/_shortcuts.py +0 -0
  158. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/__init__.py +0 -0
  159. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_create_pqt_file.py +0 -0
  160. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_migrate_calctables_to_lakehouse.py +0 -0
  161. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_migrate_calctables_to_semantic_model.py +0 -0
  162. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +0 -0
  163. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +0 -0
  164. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_migration_validation.py +0 -0
  165. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/migration/_refresh_calc_tables.py +0 -0
  166. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_BPAReportTemplate.json +0 -0
  167. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/__init__.py +0 -0
  168. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json +0 -0
  169. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/.platform +0 -0
  170. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json +0 -0
  171. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json +0 -0
  172. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json +0 -0
  173. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json +0 -0
  174. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json +0 -0
  175. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json +0 -0
  176. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json +0 -0
  177. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json +0 -0
  178. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json +0 -0
  179. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json +0 -0
  180. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json +0 -0
  181. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json +0 -0
  182. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json +0 -0
  183. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json +0 -0
  184. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json +0 -0
  185. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json +0 -0
  186. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json +0 -0
  187. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json +0 -0
  188. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json +0 -0
  189. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json +0 -0
  190. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json +0 -0
  191. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json +0 -0
  192. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json +0 -0
  193. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/pages/pages.json +0 -0
  194. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/report.json +0 -0
  195. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition/version.json +0 -0
  196. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_bpareporttemplate/definition.pbir +0 -0
  197. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_download_report.py +0 -0
  198. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_paginated.py +0 -0
  199. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_report_bpa_rules.py +0 -0
  200. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_report_functions.py +0 -0
  201. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_report_helper.py +0 -0
  202. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_report_list_functions.py +0 -0
  203. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_report_rebind.py +0 -0
  204. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/report/_reportwrapper.py +0 -0
  205. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/src/sempy_labs/tom/__init__.py +0 -0
  206. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/tests/__init__.py +0 -0
  207. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/tests/test_friendly_case.py +0 -0
  208. {semantic_link_labs-0.8.11 → semantic_link_labs-0.9.1}/tests/test_shortcuts.py +0 -0
@@ -16,6 +16,12 @@ jobs:
16
16
  with:
17
17
  python-version: "3.10"
18
18
 
19
+ - name: Setup dotnet
20
+ uses: actions/setup-dotnet@v4
21
+ with:
22
+ dotnet-version: |
23
+ 8.0.x
24
+
19
25
  - name: Get Date
20
26
  id: get-date
21
27
  run: echo "today=$(/bin/date -u '+%Y%m%d')" >> $GITHUB_OUTPUT
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: semantic-link-labs
3
- Version: 0.8.11
3
+ Version: 0.9.1
4
4
  Summary: Semantic Link Labs for Microsoft Fabric
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -15,11 +15,10 @@ Classifier: Framework :: Jupyter
15
15
  Requires-Python: <3.12,>=3.10
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
- Requires-Dist: semantic-link-sempy>=0.8.3
18
+ Requires-Dist: semantic-link-sempy>=0.8.5
19
19
  Requires-Dist: anytree
20
20
  Requires-Dist: powerbiclient
21
21
  Requires-Dist: polib
22
- Requires-Dist: azure.mgmt.resource
23
22
  Requires-Dist: jsonpath_ng
24
23
  Provides-Extra: test
25
24
  Requires-Dist: pytest>=8.2.1; extra == "test"
@@ -27,7 +26,7 @@ Requires-Dist: pytest>=8.2.1; extra == "test"
27
26
  # Semantic Link Labs
28
27
 
29
28
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
30
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.11&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
29
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.1&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
31
30
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
32
31
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
33
32
 
@@ -84,7 +83,9 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
84
83
  * Notebooks
85
84
  * [Import a notebook from the web](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.import_notebook_from_web)
86
85
  * APIs
87
- * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure (Fabric Capacity)](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
86
+ * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
87
+ * Service Principal Authentication
88
+ * Now supported using the [service_principal_authentication](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.service_principal_authentication) context manager for the [admin](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.admin.html) subpackage, Azure API wrapper functions, and [connect_semantic_model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.tom.html#sempy_labs.tom.connect_semantic_model). See this [helper notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb) for additional instructions.
88
89
 
89
90
  ## Helper Notebooks
90
91
 
@@ -142,6 +143,8 @@ An even better way to ensure the semantic-link-labs library is available in your
142
143
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
143
144
 
144
145
  ## Version History
146
+ * [0.9.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.1) (January 22, 2024)
147
+ * [0.9.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.0) (January 22, 2024)
145
148
  * [0.8.11](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.11) (December 19, 2024)
146
149
  * [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
147
150
  * [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
@@ -1,7 +1,7 @@
1
1
  # Semantic Link Labs
2
2
 
3
3
  [![PyPI version](https://badge.fury.io/py/semantic-link-labs.svg)](https://badge.fury.io/py/semantic-link-labs)
4
- [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.8.11&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
4
+ [![Read The Docs](https://readthedocs.org/projects/semantic-link-labs/badge/?version=0.9.1&style=flat)](https://readthedocs.org/projects/semantic-link-labs/)
5
5
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
6
6
  [![Downloads](https://static.pepy.tech/badge/semantic-link-labs)](https://pepy.tech/project/semantic-link-labs)
7
7
 
@@ -58,7 +58,9 @@ Check out the video below for an introduction to Semantic Link, Semantic Link La
58
58
  * Notebooks
59
59
  * [Import a notebook from the web](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.import_notebook_from_web)
60
60
  * APIs
61
- * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure (Fabric Capacity)](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
61
+ * Wrapper functions for [Power BI](https://learn.microsoft.com/rest/api/power-bi/), [Fabric](https://learn.microsoft.com/rest/api/fabric/articles/using-fabric-apis), and [Azure](https://learn.microsoft.com/rest/api/microsoftfabric/fabric-capacities?view=rest-microsoftfabric-2023-11-01) APIs
62
+ * Service Principal Authentication
63
+ * Now supported using the [service_principal_authentication](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.html#sempy_labs.service_principal_authentication) context manager for the [admin](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.admin.html) subpackage, Azure API wrapper functions, and [connect_semantic_model](https://semantic-link-labs.readthedocs.io/en/stable/sempy_labs.tom.html#sempy_labs.tom.connect_semantic_model). See this [helper notebook](https://github.com/microsoft/semantic-link-labs/blob/main/notebooks/Service%20Principal.ipynb) for additional instructions.
62
64
 
63
65
  ## Helper Notebooks
64
66
 
@@ -116,6 +118,8 @@ An even better way to ensure the semantic-link-labs library is available in your
116
118
  2. Select your newly created environment within the 'Environment' drop down in the navigation bar at the top of the notebook
117
119
 
118
120
  ## Version History
121
+ * [0.9.1](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.1) (January 22, 2024)
122
+ * [0.9.0](https://github.com/microsoft/semantic-link-labs/releases/tag/0.9.0) (January 22, 2024)
119
123
  * [0.8.11](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.11) (December 19, 2024)
120
124
  * [0.8.10](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.10) (December 16, 2024)
121
125
  * [0.8.9](https://github.com/microsoft/semantic-link-labs/releases/tag/0.8.9) (December 4, 2024)
@@ -11,5 +11,4 @@ anytree
11
11
  IPython
12
12
  polib
13
13
  powerbiclient
14
- azure.mgmt.resource
15
14
  jsonpath_ng
@@ -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.11'
16
+ release = '0.9.1'
17
17
 
18
18
  # -- General configuration ---------------------------------------------------
19
19
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -6,7 +6,7 @@ dependencies:
6
6
  - pytest-cov
7
7
  - pytest-mock
8
8
  - pip:
9
- - semantic-link-sempy>=0.8.3
9
+ - semantic-link-sempy>=0.8.5
10
10
  - azure-identity==1.7.1
11
11
  - azure-storage-blob>=12.9.0
12
12
  - pandas-stubs
@@ -0,0 +1,340 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "5c27dfd1-4fe0-4a97-92e6-ddf78889aa93",
6
+ "metadata": {
7
+ "nteract": {
8
+ "transient": {
9
+ "deleting": false
10
+ }
11
+ }
12
+ },
13
+ "source": [
14
+ "### Install the latest .whl package\n",
15
+ "\n",
16
+ "Check [here](https://pypi.org/project/semantic-link-labs/) to see the latest version."
17
+ ]
18
+ },
19
+ {
20
+ "cell_type": "code",
21
+ "execution_count": null,
22
+ "id": "d5cae9db-cef9-48a8-a351-9c5fcc99645c",
23
+ "metadata": {
24
+ "jupyter": {
25
+ "outputs_hidden": true,
26
+ "source_hidden": false
27
+ },
28
+ "nteract": {
29
+ "transient": {
30
+ "deleting": false
31
+ }
32
+ }
33
+ },
34
+ "outputs": [],
35
+ "source": [
36
+ "%pip install semantic-link-labs"
37
+ ]
38
+ },
39
+ {
40
+ "cell_type": "markdown",
41
+ "id": "2856d26d",
42
+ "metadata": {},
43
+ "source": [
44
+ "### Requirements\n",
45
+ "* Must have an Azure Subscription\n",
46
+ "* Must [register an App](https://ms.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)\n",
47
+ " * Permissions: Will need the Contributor role at the scope where the resources will be created, which is often the subscription level\n",
48
+ "* Azure Key Vault\n",
49
+ " * [Set up](https://learn.microsoft.com/azure/key-vault/secrets/quick-create-portal) within the Azure Subscription\n",
50
+ " * Save secrets for the Tenant ID, Client ID (Application ID), Client Secret\n",
51
+ " * Permissions: Ensure the user who will be executing the notebooks has “Key Vault Secrets User”\n",
52
+ "* Fabric Permissions\n",
53
+ " * User should be a tenant admin. This ensures they have the necessary authority to execute and manage the notebooks without encountering permission issues.\n",
54
+ "\n",
55
+ "### Result\n",
56
+ "* F skus are created for each (specified) capacity\n",
57
+ " * Within the same region as the P SKU\n",
58
+ " * Equivalent SKU size as the P SKU\n",
59
+ " * Same admins as listed on the P SKU\n",
60
+ " * All workspaces are migrated to the corresponding new capacity\n",
61
+ "* 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\"."
62
+ ]
63
+ },
64
+ {
65
+ "cell_type": "markdown",
66
+ "id": "b195eae8",
67
+ "metadata": {},
68
+ "source": [
69
+ "### Import the library and set the initial parameters"
70
+ ]
71
+ },
72
+ {
73
+ "cell_type": "code",
74
+ "execution_count": null,
75
+ "id": "1344e286",
76
+ "metadata": {},
77
+ "outputs": [],
78
+ "source": [
79
+ "import sempy_labs as labs\n",
80
+ "import sempy_labs.admin as admin\n",
81
+ "\n",
82
+ "azure_subscription_id = '' # Enter your Azure subscription ID\n",
83
+ "resource_group = '' # Enter the name of the resource group (to be used to create the new F skus)\n",
84
+ "\n",
85
+ "key_vault_uri = '', # Enter your key vault URI\n",
86
+ "key_vault_tenant_id = '', # Enter the key vault key to the secret storing your Tenant ID\n",
87
+ "key_vault_client_id = '', # Enter the key vault key to the secret storing your Client ID (Application ID)\n",
88
+ "key_vault_client_secret = '' # Enter the key vault key to the secret storing your Client Secret"
89
+ ]
90
+ },
91
+ {
92
+ "cell_type": "markdown",
93
+ "id": "5a3fe6e8-b8aa-4447-812b-7931831e07fe",
94
+ "metadata": {
95
+ "nteract": {
96
+ "transient": {
97
+ "deleting": false
98
+ }
99
+ }
100
+ },
101
+ "source": [
102
+ "### Migrate a single P SKU -> F SKU\n",
103
+ "Set the 'capacities' parameter to the single P SKU."
104
+ ]
105
+ },
106
+ {
107
+ "cell_type": "code",
108
+ "execution_count": null,
109
+ "id": "3655dd88",
110
+ "metadata": {},
111
+ "outputs": [],
112
+ "source": [
113
+ "with labs.service_principal_authentication(\n",
114
+ " key_vault_uri=key_vault_uri, \n",
115
+ " key_vault_tenant_id=key_vault_tenant_id,\n",
116
+ " key_vault_client_id=key_vault_client_id,\n",
117
+ " key_vault_client_secret=key_vault_client_secret):\n",
118
+ "\n",
119
+ " labs.migrate_capacities(\n",
120
+ " azure_subscription_id = azure_subscription_id,\n",
121
+ " resource_group = resource_group,\n",
122
+ " capacities = 'CapacityA',\n",
123
+ " p_sku_only = True,\n",
124
+ " )"
125
+ ]
126
+ },
127
+ {
128
+ "cell_type": "markdown",
129
+ "id": "175a59b8",
130
+ "metadata": {},
131
+ "source": [
132
+ "### Migrate a list of P SKUs to F SKUs\n",
133
+ "Set the 'capacities' parameter to a list of P SKUs."
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": null,
139
+ "id": "3a7a80ec",
140
+ "metadata": {},
141
+ "outputs": [],
142
+ "source": [
143
+ "with labs.service_principal_authentication(\n",
144
+ " key_vault_uri=key_vault_uri, \n",
145
+ " key_vault_tenant_id=key_vault_tenant_id,\n",
146
+ " key_vault_client_id=key_vault_client_id,\n",
147
+ " key_vault_client_secret=key_vault_client_secret):\n",
148
+ "\n",
149
+ " labs.migrate_capacities(\n",
150
+ " azure_subscription_id = azure_subscription_id,\n",
151
+ " resource_group = resource_group,\n",
152
+ " capacities = ['CapacityA', 'CapacityB', 'CapacityC'],\n",
153
+ " p_sku_only = True,\n",
154
+ " )"
155
+ ]
156
+ },
157
+ {
158
+ "cell_type": "markdown",
159
+ "id": "30438799",
160
+ "metadata": {},
161
+ "source": [
162
+ "### Migrate all P SKUs to F SKUs\n",
163
+ "Set the 'capacities' parameter to None."
164
+ ]
165
+ },
166
+ {
167
+ "cell_type": "code",
168
+ "execution_count": null,
169
+ "id": "315c2dc7",
170
+ "metadata": {},
171
+ "outputs": [],
172
+ "source": [
173
+ "with labs.service_principal_authentication(\n",
174
+ " key_vault_uri=key_vault_uri, \n",
175
+ " key_vault_tenant_id=key_vault_tenant_id,\n",
176
+ " key_vault_client_id=key_vault_client_id,\n",
177
+ " key_vault_client_secret=key_vault_client_secret):\n",
178
+ "\n",
179
+ " labs.migrate_capacities(\n",
180
+ " azure_subscription_id = azure_subscription_id,\n",
181
+ " resource_group = resource_group,\n",
182
+ " capacities = None,\n",
183
+ " p_sku_only = True,\n",
184
+ " )"
185
+ ]
186
+ },
187
+ {
188
+ "cell_type": "markdown",
189
+ "id": "1d8e73b2",
190
+ "metadata": {},
191
+ "source": [
192
+ "### Migrate a list of P SKUs to F SKUs; associate each capacity with a specific resource group\n",
193
+ "This process ensures that each F SKU is created within the resource group specified in the resource_group_mapping dictionary."
194
+ ]
195
+ },
196
+ {
197
+ "cell_type": "code",
198
+ "execution_count": null,
199
+ "id": "2854bf8a",
200
+ "metadata": {},
201
+ "outputs": [],
202
+ "source": [
203
+ "resource_group_mapping = {\n",
204
+ " \"CapacityA\": \"ResourceGroupA\",\n",
205
+ " \"CapacityB\": \"ResourceGroupA\",\n",
206
+ " \"CapacityC\": \"ResourceGroupB\",\n",
207
+ "}\n",
208
+ "\n",
209
+ "with labs.service_principal_authentication(\n",
210
+ " key_vault_uri=key_vault_uri, \n",
211
+ " key_vault_tenant_id=key_vault_tenant_id,\n",
212
+ " key_vault_client_id=key_vault_client_id,\n",
213
+ " key_vault_client_secret=key_vault_client_secret):\n",
214
+ "\n",
215
+ " labs.migrate_capacities(\n",
216
+ " azure_subscription_id = azure_subscription_id,\n",
217
+ " resource_group = resource_group_mapping,\n",
218
+ " capacities = ['CapacityA', 'CapacityB', 'CapacityC'],\n",
219
+ " p_sku_only = True,\n",
220
+ " )"
221
+ ]
222
+ },
223
+ {
224
+ "cell_type": "markdown",
225
+ "id": "c3f497c8",
226
+ "metadata": {},
227
+ "source": [
228
+ "### Migrate a single source capacity to a target capacity (target capacity already created)"
229
+ ]
230
+ },
231
+ {
232
+ "cell_type": "code",
233
+ "execution_count": null,
234
+ "id": "a4f0b5a2",
235
+ "metadata": {},
236
+ "outputs": [],
237
+ "source": [
238
+ "source_capacity = '' # Enter the Source capacity name\n",
239
+ "target_capacity = '' # Enter the Target capacity name (already exists) \n",
240
+ "\n",
241
+ "admin.assign_workspaces_to_capacity(\n",
242
+ " source_capacity=source_capacity,\n",
243
+ " target_capacity=target_capacity,\n",
244
+ " workspace=None,\n",
245
+ ")"
246
+ ]
247
+ },
248
+ {
249
+ "cell_type": "markdown",
250
+ "id": "e0db744b",
251
+ "metadata": {},
252
+ "source": [
253
+ "### Migrate a list of source capacities to target capacities (target capacity already created)"
254
+ ]
255
+ },
256
+ {
257
+ "cell_type": "code",
258
+ "execution_count": null,
259
+ "id": "0e04d519",
260
+ "metadata": {},
261
+ "outputs": [],
262
+ "source": [
263
+ "capacity_mapping = {\n",
264
+ " \"capacitya\": \"capacityanew\", # Format is \"Source SKU\": \"Target SKU\"\n",
265
+ " \"capacityb\": \"capacitybnew\",\n",
266
+ " \"capacityc\": \"capacitycnew\",\n",
267
+ "}\n",
268
+ "\n",
269
+ "capacities = list(capacity_mapping.keys())\n",
270
+ "\n",
271
+ "for capacity in capacities:\n",
272
+ " admin.assign_workspaces_to_capacity(\n",
273
+ " source_capacity=capacity,\n",
274
+ " target_capacity=capacity_mapping.get(capacity),\n",
275
+ " workspace=None,\n",
276
+ " )"
277
+ ]
278
+ },
279
+ {
280
+ "cell_type": "markdown",
281
+ "id": "67787c3a",
282
+ "metadata": {},
283
+ "source": [
284
+ "### Migrate a Fabric Trial Capacity (FT1) to a Fabric Capacity (F SKU)"
285
+ ]
286
+ },
287
+ {
288
+ "cell_type": "code",
289
+ "execution_count": null,
290
+ "id": "4efb55b2",
291
+ "metadata": {},
292
+ "outputs": [],
293
+ "source": [
294
+ "with labs.service_principal_authentication(\n",
295
+ " key_vault_uri=key_vault_uri, \n",
296
+ " key_vault_tenant_id=key_vault_tenant_id,\n",
297
+ " key_vault_client_id=key_vault_client_id,\n",
298
+ " key_vault_client_secret=key_vault_client_secret):\n",
299
+ "\n",
300
+ " labs.migrate_fabric_trial_capacity(\n",
301
+ " azure_subscription_id = azure_subscription_id,\n",
302
+ " resource_group = resource_group,\n",
303
+ " source_capacity = '', # The name of the Trial capacity.\n",
304
+ " target_capacity = '', # The name of Fabric capacity (if it does not exist it will be created).\n",
305
+ " target_capacity_sku = \"F64\", # Defaults to F64 but can specify the required SKU.\n",
306
+ " target_capacity_admin_members = None, # Setting this to None will use the same admin members as the Trial capacity.\n",
307
+ " )"
308
+ ]
309
+ }
310
+ ],
311
+ "metadata": {
312
+ "kernel_info": {
313
+ "name": "synapse_pyspark"
314
+ },
315
+ "kernelspec": {
316
+ "display_name": "Synapse PySpark",
317
+ "language": "Python",
318
+ "name": "synapse_pyspark"
319
+ },
320
+ "language_info": {
321
+ "name": "python"
322
+ },
323
+ "microsoft": {
324
+ "language": "python"
325
+ },
326
+ "nteract": {
327
+ "version": "nteract-front-end@1.0.0"
328
+ },
329
+ "spark_compute": {
330
+ "compute_id": "/trident/default"
331
+ },
332
+ "synapse_widget": {
333
+ "state": {},
334
+ "version": "0.1"
335
+ },
336
+ "widgets": {}
337
+ },
338
+ "nbformat": 4,
339
+ "nbformat_minor": 5
340
+ }
@@ -0,0 +1,144 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "5c27dfd1-4fe0-4a97-92e6-ddf78889aa93",
6
+ "metadata": {
7
+ "nteract": {
8
+ "transient": {
9
+ "deleting": false
10
+ }
11
+ }
12
+ },
13
+ "source": [
14
+ "### Install the latest .whl package\n",
15
+ "\n",
16
+ "Check [here](https://pypi.org/project/semantic-link-labs/) to see the latest version."
17
+ ]
18
+ },
19
+ {
20
+ "cell_type": "code",
21
+ "execution_count": null,
22
+ "id": "d5cae9db-cef9-48a8-a351-9c5fcc99645c",
23
+ "metadata": {
24
+ "jupyter": {
25
+ "outputs_hidden": true,
26
+ "source_hidden": false
27
+ },
28
+ "nteract": {
29
+ "transient": {
30
+ "deleting": false
31
+ }
32
+ }
33
+ },
34
+ "outputs": [],
35
+ "source": [
36
+ "%pip install semantic-link-labs"
37
+ ]
38
+ },
39
+ {
40
+ "cell_type": "markdown",
41
+ "id": "b195eae8",
42
+ "metadata": {},
43
+ "source": [
44
+ "### Import the library and necessary packages"
45
+ ]
46
+ },
47
+ {
48
+ "cell_type": "code",
49
+ "execution_count": null,
50
+ "id": "1344e286",
51
+ "metadata": {},
52
+ "outputs": [],
53
+ "source": [
54
+ "import sempy_labs as labs\n",
55
+ "source_dataset = '' # Name of the semantic model to backup\n",
56
+ "target_dataset = '' # Name of the semantic model to restore\n",
57
+ "source_workspace = '' # Name of the workspace in which the semantic model resides\n",
58
+ "target_workspace = '' # Destination workspace of the semantic model\n",
59
+ "source_file_path = '' # Name/path of the backup file to create\n",
60
+ "target_file_path = '' # Name/path of the backup file to be copied to the target workspace\n",
61
+ "storage_account = '' # Name of the ADLS Gen2 storage account associated with both source & target workspaces"
62
+ ]
63
+ },
64
+ {
65
+ "cell_type": "markdown",
66
+ "id": "d4f5356a",
67
+ "metadata": {},
68
+ "source": [
69
+ "#### Prerequisites\n",
70
+ "* [Create an ADLS Gen2 storage account (in the Azure Portal)](https://learn.microsoft.com/azure/storage/common/storage-account-create?tabs=azure-portal)\n",
71
+ "* Assign the ADLS Gen2 storage account to both source and target workspaces\n",
72
+ " * Navigate to your workspace.\n",
73
+ " * Select 'Workspace settings'.\n",
74
+ " * Select 'Azure connections'.\n",
75
+ " * Within 'Azure Data Lake Gen2 Storage' click 'Configure'.\n",
76
+ " * Enter your Subscription, Resource Group and Storage Account.\n",
77
+ " * Click 'Save'.\n"
78
+ ]
79
+ },
80
+ {
81
+ "cell_type": "markdown",
82
+ "id": "55e5ca67",
83
+ "metadata": {},
84
+ "source": [
85
+ "### Backup, copy and restore a semantic model to a new workspace"
86
+ ]
87
+ },
88
+ {
89
+ "cell_type": "code",
90
+ "execution_count": null,
91
+ "id": "5a985c1f",
92
+ "metadata": {},
93
+ "outputs": [],
94
+ "source": [
95
+ "labs.backup_semantic_model(\n",
96
+ " dataset=source_dataset,\n",
97
+ " file_path=source_file_path,\n",
98
+ " workspace=source_workspace,\n",
99
+ ")\n",
100
+ "labs.copy_semantic_model_backup_file(\n",
101
+ " source_workspace=source_workspace,\n",
102
+ " target_workspace=target_workspace,\n",
103
+ " source_file_name=source_file_path,\n",
104
+ " target_file_name=target_file_path,\n",
105
+ " storage_account=storage_account,\n",
106
+ ")\n",
107
+ "labs.restore_semantic_model(\n",
108
+ " dataset=target_dataset,\n",
109
+ " file_path=target_file_path,\n",
110
+ " workspace=target_workspace,\n",
111
+ ")"
112
+ ]
113
+ }
114
+ ],
115
+ "metadata": {
116
+ "kernel_info": {
117
+ "name": "synapse_pyspark"
118
+ },
119
+ "kernelspec": {
120
+ "display_name": "Synapse PySpark",
121
+ "language": "Python",
122
+ "name": "synapse_pyspark"
123
+ },
124
+ "language_info": {
125
+ "name": "python"
126
+ },
127
+ "microsoft": {
128
+ "language": "python"
129
+ },
130
+ "nteract": {
131
+ "version": "nteract-front-end@1.0.0"
132
+ },
133
+ "spark_compute": {
134
+ "compute_id": "/trident/default"
135
+ },
136
+ "synapse_widget": {
137
+ "state": {},
138
+ "version": "0.1"
139
+ },
140
+ "widgets": {}
141
+ },
142
+ "nbformat": 4,
143
+ "nbformat_minor": 5
144
+ }