semantic-link-labs 0.7.2__py3-none-any.whl → 0.7.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of semantic-link-labs might be problematic. Click here for more details.
- {semantic_link_labs-0.7.2.dist-info → semantic_link_labs-0.7.4.dist-info}/METADATA +15 -3
- semantic_link_labs-0.7.4.dist-info/RECORD +134 -0
- {semantic_link_labs-0.7.2.dist-info → semantic_link_labs-0.7.4.dist-info}/WHEEL +1 -1
- sempy_labs/__init__.py +120 -24
- sempy_labs/_bpa_translation/{_translations_am-ET.po → _model/_translations_am-ET.po} +22 -0
- sempy_labs/_bpa_translation/{_translations_ar-AE.po → _model/_translations_ar-AE.po} +24 -0
- sempy_labs/_bpa_translation/_model/_translations_bg-BG.po +938 -0
- sempy_labs/_bpa_translation/_model/_translations_ca-ES.po +934 -0
- sempy_labs/_bpa_translation/{_translations_cs-CZ.po → _model/_translations_cs-CZ.po} +179 -157
- sempy_labs/_bpa_translation/{_translations_da-DK.po → _model/_translations_da-DK.po} +24 -0
- sempy_labs/_bpa_translation/{_translations_de-DE.po → _model/_translations_de-DE.po} +77 -52
- sempy_labs/_bpa_translation/{_translations_el-GR.po → _model/_translations_el-GR.po} +25 -0
- sempy_labs/_bpa_translation/{_translations_es-ES.po → _model/_translations_es-ES.po} +67 -43
- sempy_labs/_bpa_translation/{_translations_fa-IR.po → _model/_translations_fa-IR.po} +24 -0
- sempy_labs/_bpa_translation/_model/_translations_fi-FI.po +915 -0
- sempy_labs/_bpa_translation/{_translations_fr-FR.po → _model/_translations_fr-FR.po} +83 -57
- sempy_labs/_bpa_translation/{_translations_ga-IE.po → _model/_translations_ga-IE.po} +25 -0
- sempy_labs/_bpa_translation/{_translations_he-IL.po → _model/_translations_he-IL.po} +23 -0
- sempy_labs/_bpa_translation/{_translations_hi-IN.po → _model/_translations_hi-IN.po} +24 -0
- sempy_labs/_bpa_translation/{_translations_hu-HU.po → _model/_translations_hu-HU.po} +25 -0
- sempy_labs/_bpa_translation/_model/_translations_id-ID.po +918 -0
- sempy_labs/_bpa_translation/{_translations_is-IS.po → _model/_translations_is-IS.po} +25 -0
- sempy_labs/_bpa_translation/{_translations_it-IT.po → _model/_translations_it-IT.po} +25 -0
- sempy_labs/_bpa_translation/{_translations_ja-JP.po → _model/_translations_ja-JP.po} +21 -0
- sempy_labs/_bpa_translation/_model/_translations_ko-KR.po +823 -0
- sempy_labs/_bpa_translation/_model/_translations_mt-MT.po +937 -0
- sempy_labs/_bpa_translation/{_translations_nl-NL.po → _model/_translations_nl-NL.po} +80 -56
- sempy_labs/_bpa_translation/{_translations_pl-PL.po → _model/_translations_pl-PL.po} +101 -76
- sempy_labs/_bpa_translation/{_translations_pt-BR.po → _model/_translations_pt-BR.po} +25 -0
- sempy_labs/_bpa_translation/{_translations_pt-PT.po → _model/_translations_pt-PT.po} +25 -0
- sempy_labs/_bpa_translation/_model/_translations_ro-RO.po +939 -0
- sempy_labs/_bpa_translation/{_translations_ru-RU.po → _model/_translations_ru-RU.po} +25 -0
- sempy_labs/_bpa_translation/_model/_translations_sk-SK.po +925 -0
- sempy_labs/_bpa_translation/_model/_translations_sl-SL.po +922 -0
- sempy_labs/_bpa_translation/_model/_translations_sv-SE.po +914 -0
- sempy_labs/_bpa_translation/{_translations_ta-IN.po → _model/_translations_ta-IN.po} +26 -0
- sempy_labs/_bpa_translation/{_translations_te-IN.po → _model/_translations_te-IN.po} +24 -0
- sempy_labs/_bpa_translation/{_translations_th-TH.po → _model/_translations_th-TH.po} +24 -0
- sempy_labs/_bpa_translation/_model/_translations_tr-TR.po +925 -0
- sempy_labs/_bpa_translation/_model/_translations_uk-UA.po +933 -0
- sempy_labs/_bpa_translation/{_translations_zh-CN.po → _model/_translations_zh-CN.po} +116 -97
- sempy_labs/_bpa_translation/{_translations_zu-ZA.po → _model/_translations_zu-ZA.po} +25 -0
- sempy_labs/_capacities.py +541 -0
- sempy_labs/_clear_cache.py +298 -3
- sempy_labs/_connections.py +138 -0
- sempy_labs/_dataflows.py +130 -0
- sempy_labs/_deployment_pipelines.py +171 -0
- sempy_labs/_environments.py +156 -0
- sempy_labs/_generate_semantic_model.py +148 -27
- sempy_labs/_git.py +380 -0
- sempy_labs/_helper_functions.py +203 -8
- sempy_labs/_icons.py +43 -0
- sempy_labs/_list_functions.py +170 -1012
- sempy_labs/_model_bpa.py +90 -112
- sempy_labs/_model_bpa_bulk.py +3 -1
- sempy_labs/_model_bpa_rules.py +788 -800
- sempy_labs/_notebooks.py +143 -0
- sempy_labs/_query_scale_out.py +28 -7
- sempy_labs/_spark.py +465 -0
- sempy_labs/_sql.py +120 -0
- sempy_labs/_translations.py +3 -1
- sempy_labs/_vertipaq.py +160 -99
- sempy_labs/_workspace_identity.py +66 -0
- sempy_labs/_workspaces.py +294 -0
- sempy_labs/directlake/__init__.py +2 -0
- sempy_labs/directlake/_directlake_schema_compare.py +1 -2
- sempy_labs/directlake/_directlake_schema_sync.py +1 -2
- sempy_labs/directlake/_dl_helper.py +4 -7
- sempy_labs/directlake/_generate_shared_expression.py +85 -0
- sempy_labs/directlake/_show_unsupported_directlake_objects.py +1 -2
- sempy_labs/lakehouse/_get_lakehouse_tables.py +7 -3
- sempy_labs/migration/_migrate_calctables_to_lakehouse.py +5 -0
- sempy_labs/migration/_migrate_calctables_to_semantic_model.py +5 -0
- sempy_labs/migration/_migrate_model_objects_to_semantic_model.py +6 -2
- sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py +6 -5
- sempy_labs/migration/_migration_validation.py +6 -0
- sempy_labs/report/_report_functions.py +21 -42
- sempy_labs/report/_report_rebind.py +5 -0
- sempy_labs/tom/_model.py +95 -52
- semantic_link_labs-0.7.2.dist-info/RECORD +0 -111
- {semantic_link_labs-0.7.2.dist-info → semantic_link_labs-0.7.4.dist-info}/LICENSE +0 -0
- {semantic_link_labs-0.7.2.dist-info → semantic_link_labs-0.7.4.dist-info}/top_level.txt +0 -0
|
@@ -3,24 +3,21 @@ import pandas as pd
|
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
5
|
import time
|
|
6
|
-
import base64
|
|
7
6
|
import copy
|
|
8
7
|
from anytree import Node, RenderTree
|
|
9
8
|
from powerbiclient import Report
|
|
10
|
-
from synapse.ml.services import Translate
|
|
11
9
|
from pyspark.sql.functions import col, flatten
|
|
12
|
-
from pyspark.sql import SparkSession
|
|
13
10
|
from sempy_labs.report._generate_report import update_report_from_reportjson
|
|
14
11
|
from sempy_labs.lakehouse._lakehouse import lakehouse_attached
|
|
15
12
|
from sempy_labs._helper_functions import (
|
|
16
13
|
generate_embedded_filter,
|
|
17
|
-
resolve_dataset_name,
|
|
18
14
|
resolve_report_id,
|
|
19
15
|
resolve_lakehouse_name,
|
|
20
16
|
language_validate,
|
|
21
17
|
resolve_workspace_name_and_id,
|
|
22
18
|
lro,
|
|
23
19
|
_decode_b64,
|
|
20
|
+
resolve_dataset_id,
|
|
24
21
|
)
|
|
25
22
|
from typing import List, Optional, Union
|
|
26
23
|
from sempy._utils._log import log
|
|
@@ -405,6 +402,7 @@ def clone_report(
|
|
|
405
402
|
workspace: Optional[str] = None,
|
|
406
403
|
target_workspace: Optional[str] = None,
|
|
407
404
|
target_dataset: Optional[str] = None,
|
|
405
|
+
target_dataset_workspace: Optional[str] = None,
|
|
408
406
|
):
|
|
409
407
|
"""
|
|
410
408
|
Clones a Power BI report.
|
|
@@ -426,6 +424,9 @@ def clone_report(
|
|
|
426
424
|
target_dataset : str, default=None
|
|
427
425
|
The name of the semantic model to be used by the cloned report.
|
|
428
426
|
Defaults to None which resolves to the semantic model used by the initial report.
|
|
427
|
+
target_dataset_workspace : str, default=None
|
|
428
|
+
The workspace in which the semantic model to be used by the report resides.
|
|
429
|
+
Defaults to None which resolves to the semantic model used by the initial report.
|
|
429
430
|
"""
|
|
430
431
|
|
|
431
432
|
# https://learn.microsoft.com/rest/api/power-bi/reports/clone-report-in-group
|
|
@@ -446,48 +447,25 @@ def clone_report(
|
|
|
446
447
|
target_workspace = workspace
|
|
447
448
|
target_workspace_id = workspace_id
|
|
448
449
|
else:
|
|
449
|
-
|
|
450
|
-
dfW_filt = dfW[dfW["Name"] == target_workspace]
|
|
451
|
-
|
|
452
|
-
if len(dfW_filt) == 0:
|
|
453
|
-
raise ValueError(
|
|
454
|
-
f"{icons.red_dot} The '{workspace}' is not a valid workspace."
|
|
455
|
-
)
|
|
450
|
+
target_workspace_id = fabric.resolve_workspace_id(target_workspace)
|
|
456
451
|
|
|
457
|
-
|
|
452
|
+
if target_dataset is not None:
|
|
453
|
+
if target_dataset_workspace is None:
|
|
454
|
+
target_dataset_workspace = workspace
|
|
455
|
+
target_dataset_id = resolve_dataset_id(target_dataset, target_dataset_workspace)
|
|
458
456
|
|
|
459
|
-
if
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
target_dataset_id = dfR_filt["Dataset Id"].iloc[0]
|
|
463
|
-
target_dataset = resolve_dataset_name(
|
|
464
|
-
dataset_id=target_dataset_id, workspace=target_workspace
|
|
457
|
+
if report == cloned_report and workspace == target_workspace:
|
|
458
|
+
raise ValueError(
|
|
459
|
+
f"{icons.warning} The 'report' and 'cloned_report' parameters have the same value of '{report}. The 'workspace' and 'target_workspace' have the same value of '{workspace}'. Either the 'cloned_report' or the 'target_workspace' must be different from the original report."
|
|
465
460
|
)
|
|
466
|
-
else:
|
|
467
|
-
dfD = fabric.list_datasets(workspace=target_workspace)
|
|
468
|
-
dfD_filt = dfD[dfD["Dataset Name"] == target_dataset]
|
|
469
|
-
|
|
470
|
-
if len(dfD_filt) == 0:
|
|
471
|
-
raise ValueError(
|
|
472
|
-
f"{icons.red_dot} The '{target_dataset}' target dataset does not exist in the '{target_workspace}' workspace."
|
|
473
|
-
)
|
|
474
|
-
|
|
475
|
-
target_dataset_id = dfD_filt["Dataset Id"].iloc[0]
|
|
476
461
|
|
|
477
462
|
client = fabric.PowerBIRestClient()
|
|
478
463
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
request_body = {
|
|
485
|
-
"name": cloned_report,
|
|
486
|
-
"targetModelId": target_dataset_id,
|
|
487
|
-
"targetWorkspaceId": target_workspace_id,
|
|
488
|
-
}
|
|
489
|
-
elif target_workspace is None and target_dataset is not None:
|
|
490
|
-
request_body = {"name": cloned_report, "targetModelId": target_dataset_id}
|
|
464
|
+
request_body = {"name": cloned_report}
|
|
465
|
+
if target_dataset is not None:
|
|
466
|
+
request_body["targetModelId"] = target_dataset_id
|
|
467
|
+
if target_workspace != workspace:
|
|
468
|
+
request_body["targetWorkspaceId"] = target_workspace_id
|
|
491
469
|
|
|
492
470
|
response = client.post(
|
|
493
471
|
f"/v1.0/myorg/groups/{workspace_id}/reports/{reportId}/Clone", json=request_body
|
|
@@ -496,8 +474,7 @@ def clone_report(
|
|
|
496
474
|
if response.status_code != 200:
|
|
497
475
|
raise FabricHTTPException(response)
|
|
498
476
|
print(
|
|
499
|
-
f"{icons.green_dot} The '{report}' report has been successfully cloned as the '{cloned_report}' report within the"
|
|
500
|
-
f" '{target_workspace}' workspace using the '{target_dataset}' semantic model."
|
|
477
|
+
f"{icons.green_dot} The '{report}' report has been successfully cloned as the '{cloned_report}' report within the '{target_workspace}' workspace."
|
|
501
478
|
)
|
|
502
479
|
|
|
503
480
|
|
|
@@ -756,6 +733,8 @@ def translate_report_titles(
|
|
|
756
733
|
Defaults to None which resolves to the workspace of the attached lakehouse
|
|
757
734
|
or if no lakehouse attached, resolves to the workspace of the notebook.
|
|
758
735
|
"""
|
|
736
|
+
from synapse.ml.services import Translate
|
|
737
|
+
from pyspark.sql import SparkSession
|
|
759
738
|
|
|
760
739
|
if isinstance(languages, str):
|
|
761
740
|
languages = [languages]
|
|
@@ -101,6 +101,11 @@ def report_rebind_all(
|
|
|
101
101
|
|
|
102
102
|
from sempy_labs._list_functions import list_reports_using_semantic_model
|
|
103
103
|
|
|
104
|
+
if dataset == new_dataset:
|
|
105
|
+
raise ValueError(
|
|
106
|
+
f"{icons.red_dot} The 'dataset' and 'new_dataset' parameters are both set to '{dataset}'. These parameters must be set to different values."
|
|
107
|
+
)
|
|
108
|
+
|
|
104
109
|
dataset_workspace = fabric.resolve_workspace_name(dataset_workspace)
|
|
105
110
|
|
|
106
111
|
if new_dataset_workpace is None:
|
sempy_labs/tom/_model.py
CHANGED
|
@@ -230,6 +230,7 @@ class TOMWrapper:
|
|
|
230
230
|
description: Optional[str] = None,
|
|
231
231
|
display_folder: Optional[str] = None,
|
|
232
232
|
format_string_expression: Optional[str] = None,
|
|
233
|
+
source_lineage_tag: Optional[str] = None,
|
|
233
234
|
):
|
|
234
235
|
"""
|
|
235
236
|
Adds a measure to the semantic model.
|
|
@@ -252,6 +253,8 @@ class TOMWrapper:
|
|
|
252
253
|
The display folder in which the measure will reside.
|
|
253
254
|
format_string_expression : str, default=None
|
|
254
255
|
The format string expression.
|
|
256
|
+
source_lineage_tag : str, default=None
|
|
257
|
+
A tag that represents the lineage of the source for the object.
|
|
255
258
|
"""
|
|
256
259
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
257
260
|
|
|
@@ -269,6 +272,8 @@ class TOMWrapper:
|
|
|
269
272
|
fsd = TOM.FormatStringDefinition()
|
|
270
273
|
fsd.Expression = format_string_expression
|
|
271
274
|
obj.FormatStringDefinition = fsd
|
|
275
|
+
if source_lineage_tag is not None:
|
|
276
|
+
obj.SourceLineageTag = source_lineage_tag
|
|
272
277
|
|
|
273
278
|
self.model.Tables[table_name].Measures.Add(obj)
|
|
274
279
|
|
|
@@ -285,6 +290,7 @@ class TOMWrapper:
|
|
|
285
290
|
data_category: Optional[str] = None,
|
|
286
291
|
key: Optional[bool] = False,
|
|
287
292
|
summarize_by: Optional[str] = None,
|
|
293
|
+
source_lineage_tag: Optional[str] = None,
|
|
288
294
|
):
|
|
289
295
|
"""
|
|
290
296
|
Adds a calculated table column to a calculated table within a semantic model.
|
|
@@ -314,6 +320,8 @@ class TOMWrapper:
|
|
|
314
320
|
summarize_by : str, default=None
|
|
315
321
|
Sets the value for the Summarize By property of the column.
|
|
316
322
|
Defaults to None resolves to 'Default'.
|
|
323
|
+
source_lineage_tag : str, default=None
|
|
324
|
+
A tag that represents the lineage of the source for the object.
|
|
317
325
|
"""
|
|
318
326
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
319
327
|
import System
|
|
@@ -346,6 +354,8 @@ class TOMWrapper:
|
|
|
346
354
|
obj.DisplayFolder = display_folder
|
|
347
355
|
if data_category is not None:
|
|
348
356
|
obj.DataCategory = data_category
|
|
357
|
+
if source_lineage_tag is not None:
|
|
358
|
+
obj.SourceLineageTag = source_lineage_tag
|
|
349
359
|
self.model.Tables[table_name].Columns.Add(obj)
|
|
350
360
|
|
|
351
361
|
def add_data_column(
|
|
@@ -361,6 +371,7 @@ class TOMWrapper:
|
|
|
361
371
|
data_category: Optional[str] = None,
|
|
362
372
|
key: Optional[bool] = False,
|
|
363
373
|
summarize_by: Optional[str] = None,
|
|
374
|
+
source_lineage_tag: Optional[str] = None,
|
|
364
375
|
):
|
|
365
376
|
"""
|
|
366
377
|
Adds a data column to a table within a semantic model.
|
|
@@ -390,6 +401,8 @@ class TOMWrapper:
|
|
|
390
401
|
summarize_by : str, default=None
|
|
391
402
|
Sets the value for the Summarize By property of the column.
|
|
392
403
|
Defaults to None resolves to 'Default'.
|
|
404
|
+
source_lineage_tag : str, default=None
|
|
405
|
+
A tag that represents the lineage of the source for the object.
|
|
393
406
|
"""
|
|
394
407
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
395
408
|
import System
|
|
@@ -422,6 +435,8 @@ class TOMWrapper:
|
|
|
422
435
|
obj.DisplayFolder = display_folder
|
|
423
436
|
if data_category is not None:
|
|
424
437
|
obj.DataCategory = data_category
|
|
438
|
+
if source_lineage_tag is not None:
|
|
439
|
+
obj.SourceLineageTag = source_lineage_tag
|
|
425
440
|
self.model.Tables[table_name].Columns.Add(obj)
|
|
426
441
|
|
|
427
442
|
def add_calculated_column(
|
|
@@ -437,6 +452,7 @@ class TOMWrapper:
|
|
|
437
452
|
data_category: Optional[str] = None,
|
|
438
453
|
key: Optional[bool] = False,
|
|
439
454
|
summarize_by: Optional[str] = None,
|
|
455
|
+
source_lineage_tag: Optional[str] = None,
|
|
440
456
|
):
|
|
441
457
|
"""
|
|
442
458
|
Adds a calculated column to a table within a semantic model.
|
|
@@ -466,6 +482,8 @@ class TOMWrapper:
|
|
|
466
482
|
summarize_by : str, default=None
|
|
467
483
|
Sets the value for the Summarize By property of the column.
|
|
468
484
|
Defaults to None which resolves to 'Default'.
|
|
485
|
+
source_lineage_tag : str, default=None
|
|
486
|
+
A tag that represents the lineage of the source for the object.
|
|
469
487
|
"""
|
|
470
488
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
471
489
|
import System
|
|
@@ -498,6 +516,8 @@ class TOMWrapper:
|
|
|
498
516
|
obj.DisplayFolder = display_folder
|
|
499
517
|
if data_category is not None:
|
|
500
518
|
obj.DataCategory = data_category
|
|
519
|
+
if source_lineage_tag is not None:
|
|
520
|
+
obj.SourceLineageTag = source_lineage_tag
|
|
501
521
|
self.model.Tables[table_name].Columns.Add(obj)
|
|
502
522
|
|
|
503
523
|
def add_calculation_item(
|
|
@@ -657,6 +677,7 @@ class TOMWrapper:
|
|
|
657
677
|
levels: Optional[List[str]] = None,
|
|
658
678
|
hierarchy_description: Optional[str] = None,
|
|
659
679
|
hierarchy_hidden: Optional[bool] = False,
|
|
680
|
+
source_lineage_tag: Optional[str] = None,
|
|
660
681
|
):
|
|
661
682
|
"""
|
|
662
683
|
Adds a `hierarchy <https://learn.microsoft.com/dotnet/api/microsoft.analysisservices.hierarchy?view=analysisservices-dotnet>`_ to a table within a semantic model.
|
|
@@ -675,6 +696,8 @@ class TOMWrapper:
|
|
|
675
696
|
A description of the hierarchy.
|
|
676
697
|
hierarchy_hidden : bool, default=False
|
|
677
698
|
Whether the hierarchy is visible or hidden.
|
|
699
|
+
source_lineage_tag : str, default=None
|
|
700
|
+
A tag that represents the lineage of the source for the object.
|
|
678
701
|
"""
|
|
679
702
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
680
703
|
|
|
@@ -701,6 +724,8 @@ class TOMWrapper:
|
|
|
701
724
|
obj.IsHidden = hierarchy_hidden
|
|
702
725
|
if hierarchy_description is not None:
|
|
703
726
|
obj.Description = hierarchy_description
|
|
727
|
+
if source_lineage_tag is not None:
|
|
728
|
+
obj.SourceLineageTag = source_lineage_tag
|
|
704
729
|
self.model.Tables[table_name].Hierarchies.Add(obj)
|
|
705
730
|
|
|
706
731
|
for col in columns:
|
|
@@ -846,7 +871,11 @@ class TOMWrapper:
|
|
|
846
871
|
self.model.Tables.Add(tbl)
|
|
847
872
|
|
|
848
873
|
def add_expression(
|
|
849
|
-
self,
|
|
874
|
+
self,
|
|
875
|
+
name: str,
|
|
876
|
+
expression: str,
|
|
877
|
+
description: Optional[str] = None,
|
|
878
|
+
source_lineage_tag: Optional[str] = None,
|
|
850
879
|
):
|
|
851
880
|
"""
|
|
852
881
|
Adds an `expression <https://learn.microsoft.com/dotnet/api/microsoft.analysisservices.tabular.namedexpression?view=analysisservices-dotnet>`_ to a semantic model.
|
|
@@ -859,6 +888,8 @@ class TOMWrapper:
|
|
|
859
888
|
The M expression of the expression.
|
|
860
889
|
description : str, default=None
|
|
861
890
|
A description of the expression.
|
|
891
|
+
source_lineage_tag : str, default=None
|
|
892
|
+
A tag that represents the lineage of the source for the object.
|
|
862
893
|
"""
|
|
863
894
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
864
895
|
|
|
@@ -866,6 +897,8 @@ class TOMWrapper:
|
|
|
866
897
|
exp.Name = name
|
|
867
898
|
if description is not None:
|
|
868
899
|
exp.Description = description
|
|
900
|
+
if source_lineage_tag is not None:
|
|
901
|
+
exp.SourceLineageTag = source_lineage_tag
|
|
869
902
|
exp.Kind = TOM.ExpressionKind.M
|
|
870
903
|
exp.Expression = expression
|
|
871
904
|
|
|
@@ -2495,6 +2528,7 @@ class TOMWrapper:
|
|
|
2495
2528
|
description: Optional[str] = None,
|
|
2496
2529
|
data_category: Optional[str] = None,
|
|
2497
2530
|
hidden: Optional[bool] = False,
|
|
2531
|
+
source_lineage_tag: Optional[str] = None,
|
|
2498
2532
|
):
|
|
2499
2533
|
"""
|
|
2500
2534
|
Adds a table to the semantic model.
|
|
@@ -2509,6 +2543,8 @@ class TOMWrapper:
|
|
|
2509
2543
|
The data category for the table.
|
|
2510
2544
|
hidden : bool, default=False
|
|
2511
2545
|
Whether the table is hidden or visible.
|
|
2546
|
+
source_lineage_tag : str, default=None
|
|
2547
|
+
A tag that represents the lineage of the source for the object.
|
|
2512
2548
|
"""
|
|
2513
2549
|
import Microsoft.AnalysisServices.Tabular as TOM
|
|
2514
2550
|
|
|
@@ -2518,6 +2554,8 @@ class TOMWrapper:
|
|
|
2518
2554
|
t.Description = description
|
|
2519
2555
|
if data_category is not None:
|
|
2520
2556
|
t.DataCategory = data_category
|
|
2557
|
+
if source_lineage_tag is not None:
|
|
2558
|
+
t.SourceLineageTag = source_lineage_tag
|
|
2521
2559
|
t.Hidden = hidden
|
|
2522
2560
|
self.model.Tables.Add(t)
|
|
2523
2561
|
|
|
@@ -2707,27 +2745,17 @@ class TOMWrapper:
|
|
|
2707
2745
|
Saves Vertipaq Analyzer statistics as annotations on objects in the semantic model.
|
|
2708
2746
|
"""
|
|
2709
2747
|
|
|
2710
|
-
|
|
2748
|
+
from sempy_labs._list_functions import list_tables
|
|
2749
|
+
|
|
2750
|
+
dfT = list_tables(
|
|
2711
2751
|
dataset=self._dataset, workspace=self._workspace, extended=True
|
|
2712
2752
|
)
|
|
2713
2753
|
dfC = fabric.list_columns(
|
|
2714
2754
|
dataset=self._dataset, workspace=self._workspace, extended=True
|
|
2715
2755
|
)
|
|
2716
|
-
# intList = ['Total Size']#, 'Data Size', 'Dictionary Size', 'Hierarchy Size']
|
|
2717
|
-
dfCSum = dfC.groupby(["Table Name"])["Total Size"].sum().reset_index()
|
|
2718
|
-
dfTable = pd.merge(
|
|
2719
|
-
dfT[["Name", "Type", "Row Count"]],
|
|
2720
|
-
dfCSum[["Table Name", "Total Size"]],
|
|
2721
|
-
left_on="Name",
|
|
2722
|
-
right_on="Table Name",
|
|
2723
|
-
how="inner",
|
|
2724
|
-
)
|
|
2725
2756
|
dfP = fabric.list_partitions(
|
|
2726
2757
|
dataset=self._dataset, workspace=self._workspace, extended=True
|
|
2727
2758
|
)
|
|
2728
|
-
dfP["Records per Segment"] = round(
|
|
2729
|
-
dfP["Record Count"] / dfP["Segment Count"], 2
|
|
2730
|
-
)
|
|
2731
2759
|
dfH = fabric.list_hierarchies(
|
|
2732
2760
|
dataset=self._dataset, workspace=self._workspace, extended=True
|
|
2733
2761
|
)
|
|
@@ -2736,58 +2764,73 @@ class TOMWrapper:
|
|
|
2736
2764
|
)
|
|
2737
2765
|
|
|
2738
2766
|
for t in self.model.Tables:
|
|
2739
|
-
dfT_filt =
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2767
|
+
dfT_filt = dfT[dfT["Name"] == t.Name]
|
|
2768
|
+
if len(dfT_filt) > 0:
|
|
2769
|
+
row = dfT_filt.iloc[0]
|
|
2770
|
+
rowCount = str(row["Row Count"])
|
|
2771
|
+
totalSize = str(row["Total Size"])
|
|
2772
|
+
self.set_annotation(object=t, name="Vertipaq_RowCount", value=rowCount)
|
|
2773
|
+
self.set_annotation(
|
|
2774
|
+
object=t, name="Vertipaq_TableSize", value=totalSize
|
|
2775
|
+
)
|
|
2744
2776
|
for c in t.Columns:
|
|
2745
2777
|
dfC_filt = dfC[
|
|
2746
2778
|
(dfC["Table Name"] == t.Name) & (dfC["Column Name"] == c.Name)
|
|
2747
2779
|
]
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2780
|
+
if len(dfC_filt) > 0:
|
|
2781
|
+
row = dfC_filt.iloc[0]
|
|
2782
|
+
totalSize = str(row["Total Size"])
|
|
2783
|
+
dataSize = str(row["Data Size"])
|
|
2784
|
+
dictSize = str(row["Dictionary Size"])
|
|
2785
|
+
hierSize = str(row["Hierarchy Size"])
|
|
2786
|
+
card = str(row["Column Cardinality"])
|
|
2787
|
+
self.set_annotation(
|
|
2788
|
+
object=c, name="Vertipaq_TotalSize", value=totalSize
|
|
2789
|
+
)
|
|
2790
|
+
self.set_annotation(
|
|
2791
|
+
object=c, name="Vertipaq_DataSize", value=dataSize
|
|
2792
|
+
)
|
|
2793
|
+
self.set_annotation(
|
|
2794
|
+
object=c, name="Vertipaq_DictionarySize", value=dictSize
|
|
2795
|
+
)
|
|
2796
|
+
self.set_annotation(
|
|
2797
|
+
object=c, name="Vertipaq_HierarchySize", value=hierSize
|
|
2798
|
+
)
|
|
2799
|
+
self.set_annotation(
|
|
2800
|
+
object=c, name="Vertipaq_Cardinality", value=card
|
|
2801
|
+
)
|
|
2764
2802
|
for p in t.Partitions:
|
|
2765
2803
|
dfP_filt = dfP[
|
|
2766
2804
|
(dfP["Table Name"] == t.Name) & (dfP["Partition Name"] == p.Name)
|
|
2767
2805
|
]
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2806
|
+
if len(dfP_filt) > 0:
|
|
2807
|
+
row = dfP_filt.iloc[0]
|
|
2808
|
+
recordCount = str(row["Record Count"])
|
|
2809
|
+
segmentCount = str(row["Segment Count"])
|
|
2810
|
+
rpS = str(row["Records per Segment"])
|
|
2811
|
+
self.set_annotation(
|
|
2812
|
+
object=p, name="Vertipaq_RecordCount", value=recordCount
|
|
2813
|
+
)
|
|
2814
|
+
self.set_annotation(
|
|
2815
|
+
object=p, name="Vertipaq_SegmentCount", value=segmentCount
|
|
2816
|
+
)
|
|
2817
|
+
self.set_annotation(
|
|
2818
|
+
object=p, name="Vertipaq_RecordsPerSegment", value=rpS
|
|
2819
|
+
)
|
|
2780
2820
|
for h in t.Hierarchies:
|
|
2781
2821
|
dfH_filt = dfH[
|
|
2782
2822
|
(dfH["Table Name"] == t.Name) & (dfH["Hierarchy Name"] == h.Name)
|
|
2783
2823
|
]
|
|
2784
|
-
|
|
2785
|
-
|
|
2824
|
+
if len(dfH_filt) > 0:
|
|
2825
|
+
usedSize = str(dfH_filt["Used Size"].iloc[0])
|
|
2826
|
+
self.set_annotation(
|
|
2827
|
+
object=h, name="Vertipaq_UsedSize", value=usedSize
|
|
2828
|
+
)
|
|
2786
2829
|
for r in self.model.Relationships:
|
|
2787
2830
|
dfR_filt = dfR[dfR["Relationship Name"] == r.Name]
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2831
|
+
if len(dfR_filt) > 0:
|
|
2832
|
+
relSize = str(dfR_filt["Used Size"].iloc[0])
|
|
2833
|
+
self.set_annotation(object=r, name="Vertipaq_UsedSize", value=relSize)
|
|
2791
2834
|
try:
|
|
2792
2835
|
runId = self.get_annotation_value(object=self.model, name="Vertipaq_Run")
|
|
2793
2836
|
runId = str(int(runId) + 1)
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
sempy_labs/__init__.py,sha256=RHVPI2-N-m4tiNOEqMHwWmHoXtTec9-hr3ls-8MGeQ0,5675
|
|
2
|
-
sempy_labs/_ai.py,sha256=CjlFebT35Rzbw90BmsDy7PjLiAZMZ-B7wZ_EoI444bw,16271
|
|
3
|
-
sempy_labs/_clear_cache.py,sha256=NckXmtDCgRqlNL5FvLTut2XWLI0Hft3O4sAaXS1tPfo,1743
|
|
4
|
-
sempy_labs/_connections.py,sha256=w1dFC4WeTNFmLGD2EL_Syk0Wb1Eij18we2FVn_VaCD8,7641
|
|
5
|
-
sempy_labs/_dax.py,sha256=dt1GgHceyM7f6phRBPxRKnmQy_KYKpcgFQHuOjGbpLo,2029
|
|
6
|
-
sempy_labs/_generate_semantic_model.py,sha256=igKsVX-5Nqpipjg0taLFro8OsD3ogwSwKsyVAmuRwG4,8647
|
|
7
|
-
sempy_labs/_helper_functions.py,sha256=DFfThu8nIvRTGACP8gCJ4tObyzsCrd4Ox9Tk3CmIwyk,24909
|
|
8
|
-
sempy_labs/_icons.py,sha256=UK7chr_tEkZd4Y7Es_KyTc4dFgtYS4f31ggWxyqC9uY,853
|
|
9
|
-
sempy_labs/_list_functions.py,sha256=MKw5JLHnRVRiOwzsvUmyesyOWUpatcPB8WHg1QXS83w,92070
|
|
10
|
-
sempy_labs/_model_auto_build.py,sha256=fX3bCLFCOMQHuheKIoB48fUABG7XAT7qqsMbUiWSrY0,5071
|
|
11
|
-
sempy_labs/_model_bpa.py,sha256=U9rHoGzuAmV1dtJvgSVk3BiUwDp6WTFt1l0CbkmKcdE,20439
|
|
12
|
-
sempy_labs/_model_bpa_bulk.py,sha256=b0Y6XbzKQawExSW6yEpwgBlptFe7Y7rFtY3mombBun4,15023
|
|
13
|
-
sempy_labs/_model_bpa_rules.py,sha256=jujUiwUbIJW16UR3tUgxmj21PdSUxjzfiEFEEf-w40Q,48095
|
|
14
|
-
sempy_labs/_model_dependencies.py,sha256=nZdqq2iMhZejnS_LCd2rpK6r1B7jWpa3URkxobRPifY,12986
|
|
15
|
-
sempy_labs/_one_lake_integration.py,sha256=eIuLxlw8eXfUH2avKhsyLmXZbTllSwGsz2j_HMAikpQ,6234
|
|
16
|
-
sempy_labs/_query_scale_out.py,sha256=tF4xxWr2WhD7SsIYZelH7iL2C8mn4cJhHq1j2cOamSk,14407
|
|
17
|
-
sempy_labs/_refresh_semantic_model.py,sha256=2qzP9KqmwA20RuL1o6Lt9bIjC-KtdX8ZgcTvJParg-w,7157
|
|
18
|
-
sempy_labs/_translations.py,sha256=BcrVIrBNSKtbFz4Y9t1Dh1SZCu0K4NHu7n01Z6O76IY,19665
|
|
19
|
-
sempy_labs/_vertipaq.py,sha256=zMKtcCQ2gpgoDLisTbTjFNe60Cg2PlAQ6HvkSlbpKPo,33660
|
|
20
|
-
sempy_labs/_bpa_translation/_translations_am-ET.po,sha256=XW0Djm-jlLZRXEnhZvk8r1aWd2I36mr97XxFt9yZ-N0,36831
|
|
21
|
-
sempy_labs/_bpa_translation/_translations_ar-AE.po,sha256=mPQR83IulMmT2qSXTSOXWahjwqy7dg3AjtFmAxbraOI,34753
|
|
22
|
-
sempy_labs/_bpa_translation/_translations_cs-CZ.po,sha256=D3WiV3LVbAQzy9hjszOEA2GtOsrtUjBYJfF_7a0N0jU,29695
|
|
23
|
-
sempy_labs/_bpa_translation/_translations_da-DK.po,sha256=f-6mncit2OkEJR73_kZTu8CfEXvpEZMrKcPSVGGZMVU,28680
|
|
24
|
-
sempy_labs/_bpa_translation/_translations_de-DE.po,sha256=SEoAyp72awJlboDMRKaZEu-BhOGlRTLCne1P3H7IT6M,30917
|
|
25
|
-
sempy_labs/_bpa_translation/_translations_el-GR.po,sha256=BDlrTp3MvI_NzHG67QVxdwK3LG1NUdrLJiqvn8Yj0Dk,43355
|
|
26
|
-
sempy_labs/_bpa_translation/_translations_es-ES.po,sha256=JlxqiFF7HYEBhmgqddy5HmvJb6o9OjQLpaZqehgh69U,30023
|
|
27
|
-
sempy_labs/_bpa_translation/_translations_fa-IR.po,sha256=kWXO5Oe1_YJ_HK231Co14EaSJS3zuiHUp97_Zt9FDOw,36620
|
|
28
|
-
sempy_labs/_bpa_translation/_translations_fr-FR.po,sha256=lwAPshENCPwZzbwgQk_WNc1UDkXvTOk9jkbEK6wL2bs,31551
|
|
29
|
-
sempy_labs/_bpa_translation/_translations_ga-IE.po,sha256=W_ed6zTDa7BpnOI9QtDS3NmmGaRgKwUiKow89JRrxGY,30786
|
|
30
|
-
sempy_labs/_bpa_translation/_translations_he-IL.po,sha256=amaKGtkie9qDWIxT-Jz_EnDP5VveMRt9oVBNENBMLwU,33492
|
|
31
|
-
sempy_labs/_bpa_translation/_translations_hi-IN.po,sha256=skaR59KMw__cgO7e77ejIW7_ZG2ztuyeb-J-Q3v6pzs,49292
|
|
32
|
-
sempy_labs/_bpa_translation/_translations_hu-HU.po,sha256=vTEkRCJ0Dqy1kJzzKkvGU0y4Sf0HP9hulluK1NE-f9U,30973
|
|
33
|
-
sempy_labs/_bpa_translation/_translations_is-IS.po,sha256=2565DYm_VfM6sXju4YwA7oOb9_JIXYkskSZVTyFj1VI,28992
|
|
34
|
-
sempy_labs/_bpa_translation/_translations_it-IT.po,sha256=7SBempvRLlLWvd2WVb1927ph9RdqqrpbJLi4wsVafl4,30700
|
|
35
|
-
sempy_labs/_bpa_translation/_translations_ja-JP.po,sha256=XJRbXywLBrlUubDACCWTDr37bcfluUdDVzOmI6DVZA8,33218
|
|
36
|
-
sempy_labs/_bpa_translation/_translations_nl-NL.po,sha256=9tqJh81FHndDSa8ZR3kkQnWVvyEM4-s_WsCB3EOYN2M,30242
|
|
37
|
-
sempy_labs/_bpa_translation/_translations_pl-PL.po,sha256=YQxixTn1AVT-ds20CJMpQweoO4qiHh6JxVuLIVarNh4,30393
|
|
38
|
-
sempy_labs/_bpa_translation/_translations_pt-BR.po,sha256=o_fKzTd1AWAvZIM_Na0BC_DTkVQwoG0pcIwclwIEUBc,29644
|
|
39
|
-
sempy_labs/_bpa_translation/_translations_pt-PT.po,sha256=CtAHtWmxCZ_nK2GS_9Y5y-DQVPqq0BfRKX8hj52m-VY,29583
|
|
40
|
-
sempy_labs/_bpa_translation/_translations_ru-RU.po,sha256=pesyfVvCut22mCRxOSbpziy2T-4KCoAJXPoIjdXrhTc,41374
|
|
41
|
-
sempy_labs/_bpa_translation/_translations_ta-IN.po,sha256=8xcyOLO3SVWXTxuwouLquINnA_QtgOH1kwhPLyraxPQ,56195
|
|
42
|
-
sempy_labs/_bpa_translation/_translations_te-IN.po,sha256=j7Zk29lTWZmJoN8MPz1iEzv7rU9X7zcbIp-Ui_X4Q5Y,51377
|
|
43
|
-
sempy_labs/_bpa_translation/_translations_th-TH.po,sha256=oleGJikyzARW36mq8hgwHqJKVZ5zkPPUgJVc1G_8BCc,47689
|
|
44
|
-
sempy_labs/_bpa_translation/_translations_zh-CN.po,sha256=OVrLt1-mCGjeha-o3d7Nt5hq0H9nDq4fUHtZayp1oMw,25548
|
|
45
|
-
sempy_labs/_bpa_translation/_translations_zu-ZA.po,sha256=ZpZTmhkRg7U7esS6ZxVxEgGldB0JhpfdhLE7daJyGSM,29609
|
|
46
|
-
sempy_labs/directlake/__init__.py,sha256=R2AGiGFSQzHNMdeWHcr_bJT6tNPYWvKgCgi6s_vY_nc,1924
|
|
47
|
-
sempy_labs/directlake/_directlake_schema_compare.py,sha256=lsuDsPG4xVNNrT2yhJmSuILyeMiuBxRKqdnmudcLA-c,4448
|
|
48
|
-
sempy_labs/directlake/_directlake_schema_sync.py,sha256=NqciV_O0K7aJ8EbWxQVZIv2dbRuRDRONH5ttgmHr1cw,4380
|
|
49
|
-
sempy_labs/directlake/_dl_helper.py,sha256=2Y6SVVCaE9uh1qv7lawYOdnOJ4gomAm0EEDXaXKIALU,8760
|
|
50
|
-
sempy_labs/directlake/_get_directlake_lakehouse.py,sha256=sovI4ds2SEgkp4Fi465jtJ4seRvQxdYgcixRDvsUwNM,2321
|
|
51
|
-
sempy_labs/directlake/_get_shared_expression.py,sha256=Xl2_GYqRll95cN7JjwLlULbcRXM71Ij9JkrYAp7cNJM,1943
|
|
52
|
-
sempy_labs/directlake/_guardrails.py,sha256=0zqqkEDk02_jb4MzWJCKRNcDtfPGBcWUcxuQcDbgWns,2390
|
|
53
|
-
sempy_labs/directlake/_list_directlake_model_calc_tables.py,sha256=_rpnbgsFAz2W16PpgIOB0Rj_Fs1ZKrDbz3DUaaR_bfU,2143
|
|
54
|
-
sempy_labs/directlake/_show_unsupported_directlake_objects.py,sha256=QNj2wHzFGtjnsAICmlc7BuhCYkw0An0XnditDTCG2JM,3358
|
|
55
|
-
sempy_labs/directlake/_update_directlake_model_lakehouse_connection.py,sha256=b_Y5_GSfWC25wH6R7L37-AHO9fvKkmxRGaP6dVDC7-w,3233
|
|
56
|
-
sempy_labs/directlake/_update_directlake_partition_entity.py,sha256=Pbx7LCdKyqEfX1npLvhw0WzFnOEbluwB3_xW0ELvHL4,8580
|
|
57
|
-
sempy_labs/directlake/_warm_cache.py,sha256=ZgPricISRszx-yDERXihBDGVhEFB9yX-nBtLX0ZJTXI,8258
|
|
58
|
-
sempy_labs/lakehouse/__init__.py,sha256=6LVQltQ3cjyiuxvjXTuNdJ163zSqi4h_tEZY4zsxuSw,647
|
|
59
|
-
sempy_labs/lakehouse/_get_lakehouse_columns.py,sha256=Bb_iCTlNwl0wdN4dW_E7tVnfbHhHwQT_l0SUqvcbYpo,2582
|
|
60
|
-
sempy_labs/lakehouse/_get_lakehouse_tables.py,sha256=1IXa_u1c4CJSlmP1rxBCMcOrQw-vmRXjqd5U5xsx_5c,8800
|
|
61
|
-
sempy_labs/lakehouse/_lakehouse.py,sha256=qtCVr1cM0TWY6z5YS57w0nj3DEfXT5xmyDtr3676kAk,5172
|
|
62
|
-
sempy_labs/lakehouse/_shortcuts.py,sha256=MT_Cqog5cTMz9fN3M_ZjAaQSjXXiyCyPWGY8LbaXZsI,6977
|
|
63
|
-
sempy_labs/migration/__init__.py,sha256=w4vvGk6wTWXVfofJDmio2yIFvSSJsxOpjv6mvNGmrOI,1043
|
|
64
|
-
sempy_labs/migration/_create_pqt_file.py,sha256=oYoKD78K9Ox1fqtkh-BfU_G5nUIoK_-5ChvCKDsYsWU,9257
|
|
65
|
-
sempy_labs/migration/_migrate_calctables_to_lakehouse.py,sha256=p24PBg26gQHoj6VNcoK61o2ILJrVbVrJQ_n3PH4o0p0,17530
|
|
66
|
-
sempy_labs/migration/_migrate_calctables_to_semantic_model.py,sha256=cm3ny8i4b6D-Ew22-WZKyEFPLDr0wovkrlqTazYSbR8,5982
|
|
67
|
-
sempy_labs/migration/_migrate_model_objects_to_semantic_model.py,sha256=-JkxmM8PbEpLBeCssUgkIcnGHYnxHruqrMWp1CdiT6s,23123
|
|
68
|
-
sempy_labs/migration/_migrate_tables_columns_to_semantic_model.py,sha256=G5cfmaK5ThLJc49SV9JMr2mX0--an3fFDr44n8gI1WQ,6349
|
|
69
|
-
sempy_labs/migration/_migration_validation.py,sha256=phbUUIYA5z4dZvEKrVbByMTPPwMscY7Dy9HVxE8z_HM,2483
|
|
70
|
-
sempy_labs/migration/_refresh_calc_tables.py,sha256=eDj0OJQ07Tum4umZH0NsUW5Rx_YXEpGnAu8OVVoQ4yk,5190
|
|
71
|
-
sempy_labs/report/_BPAReportTemplate.json,sha256=9Uh-7E6d2ooxQ7j5JRayv_ayEULc7Gzg42kZGKdOqH8,63920
|
|
72
|
-
sempy_labs/report/__init__.py,sha256=GQcTHbB3SjLEeCH0id_jlmqQ7S1iPCpoISUQfAHI2T8,960
|
|
73
|
-
sempy_labs/report/_generate_report.py,sha256=7H2xQ5nHDK1_2RjvNNHX3IwWyNSRbTGMpGWxMmmjdOk,12189
|
|
74
|
-
sempy_labs/report/_report_functions.py,sha256=YK9UdpVDro_XC7ZAqNLHB4ZbAPwCwEm2YLn6RzJWkA8,29868
|
|
75
|
-
sempy_labs/report/_report_rebind.py,sha256=t33liDvBitOhwxGPPLWJYzcccu9tBTjRFTAZkX6UYv8,4809
|
|
76
|
-
sempy_labs/report/_bpareporttemplate/.platform,sha256=kWRa6B_KwSYLsvVFDx372mQriQO8v7dJ_YzQV_cfD-Q,303
|
|
77
|
-
sempy_labs/report/_bpareporttemplate/definition.pbir,sha256=bttyHZYKqjA8OBb_cezGlX4H82cDvGZVCl1QB3fij4E,343
|
|
78
|
-
sempy_labs/report/_bpareporttemplate/.pbi/localSettings.json,sha256=kzjBlNdjbsSBBSHBwbQc298AJCr9Vp6Ex0D5PemUuT0,1578
|
|
79
|
-
sempy_labs/report/_bpareporttemplate/StaticResources/SharedResources/BaseThemes/CY24SU06.json,sha256=4N6sT5nLlYBobGmZ1Xb68uOMVVCBEyheR535js_et28,13467
|
|
80
|
-
sempy_labs/report/_bpareporttemplate/definition/report.json,sha256=-8BK5blTE-nc0Y4-M0pTHD8Znt3pHZ-u2veRppxPDBQ,3975
|
|
81
|
-
sempy_labs/report/_bpareporttemplate/definition/version.json,sha256=yL3ZZqhfHqq0MS0glrbXtQgkPk17xaTSWvPPyxBWpOc,152
|
|
82
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/pages.json,sha256=jBLscHaA4wAQwusHXA3oYFaTsk3LL6S--k6wvvehJhk,311
|
|
83
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/page.json,sha256=5qfUCQXMdeDAKtfdLxQZt06-e111OTSP07gsmG1dfpY,313
|
|
84
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/1b08bce3bebabb0a27a8/visual.json,sha256=wyB8w15elLuJorCx3lnQYD7OOXqNsoVgqNaDdukO4G8,4455
|
|
85
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/2f22ddb70c301693c165/visual.json,sha256=v-DCEtln1r6EVG7-KlfWBCbxnWzk9LyjycHjAmowObs,10977
|
|
86
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/3b1182230aa6c600b43a/visual.json,sha256=3cg4bTS_7OAMuWYKtPFqZeBbZoNczLg59zQClNqgAw8,2858
|
|
87
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/58577ba6380c69891500/visual.json,sha256=ynOggnusTsTBxaXh9Q1n3zmsixHNhIohwku2y40Z-Js,14453
|
|
88
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/a2a8fa5028b3b776c96c/visual.json,sha256=DU_t1cr5eczWFy9EI0R1v7S-cbNIdSyll0az5jKJRf4,5090
|
|
89
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/adfd47ef30652707b987/visual.json,sha256=0HnplDEjDGa3htdufUksOxzC7iZGERNxgf3k81_kJ7E,12829
|
|
90
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/b6a80ee459e716e170b1/visual.json,sha256=kl45g9-GF8wNrQRM2PrsS-Rf0cYhP5b3-lqAeXJfmN8,2866
|
|
91
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/01d72098bda5055bd500/visuals/ce3130a721c020cc3d81/visual.json,sha256=id6U55GALhCx5BwtM_aCFjMkiVkhSvR79o2pbrMwNyA,12981
|
|
92
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/page.json,sha256=7pk03j28AwlE2HIwxei08Pz5VseRPO8eziOC6dgEJfs,249
|
|
93
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/92735ae19b31712208ad/visuals/66e60dfb526437cd78d1/visual.json,sha256=7ZqozO6t9Ossms8Y20xGea3tdSAESSkxkejqTDRW15E,2982
|
|
94
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/page.json,sha256=dNExLBlxFRHASVCz8DUZ2Voq_ZCCuGu1YZmw2HdwCww,314
|
|
95
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/07deb8bce824e1be37d7/visual.json,sha256=nZaj33KCp6bqxG0_nplUyi8-AGavN1iOp2lVkI0gLvw,12928
|
|
96
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0b1c68838818b32ad03b/visual.json,sha256=xaykDc6T5qwe8qENlAaAd-Ivw8oF1dderfrhSbUKGW4,10102
|
|
97
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0c171de9d2683d10b930/visual.json,sha256=Fk7MWX8LhbftzHe_6KCFkSp2jYzRMYnZSWeElnFWLbw,915
|
|
98
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/0efa01be0510e40a645e/visual.json,sha256=O4wgVQuf-tAGDjVuzlnoOGi8GLPG2Vxz6y-JubTRQfY,14305
|
|
99
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/6bf2f0eb830ab53cc668/visual.json,sha256=twzhLrEcCzUikeiKJ5sSEmQZ1otKXxgTtdz0uX4AKes,5445
|
|
100
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/88d8141cb8500b60030c/visual.json,sha256=3dS2XcsYWMEity0zFs0hxrv_w0Tnwe50iZFYvotfsWY,2856
|
|
101
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/a753273590beed656a03/visual.json,sha256=Y59BS3bx16gzmZn-3-JqJZ_BRxeqVuoaVlysZvVAZAQ,14451
|
|
102
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/c597da16dc7e63222a82/visuals/b8fdc82cddd61ac447bc/visual.json,sha256=zOVrg0CaoOSxedwwyD8Msm94sqFVM0l-6IXX51EMRZY,2866
|
|
103
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/page.json,sha256=wBVuNc8S2NaUA0FC708w6stmR2djNZp8nAsHMqesgsc,293
|
|
104
|
-
sempy_labs/report/_bpareporttemplate/definition/pages/d37dce724a0ccc30044b/visuals/ce8532a7e25020271077/visual.json,sha256=mlY6t9OlSe-Y6_QmXJpS1vggU6Y3FjISUKECL8FVSg8,931
|
|
105
|
-
sempy_labs/tom/__init__.py,sha256=Qbs8leW0fjzvWwOjyWK3Hjeehu7IvpB1beASGsi28bk,121
|
|
106
|
-
sempy_labs/tom/_model.py,sha256=M-es2bES3Usj5uVmt5vwNmtm9vWzeqtVtKREpxjnjiI,151050
|
|
107
|
-
semantic_link_labs-0.7.2.dist-info/LICENSE,sha256=ws_MuBL-SCEBqPBFl9_FqZkaaydIJmxHrJG2parhU4M,1141
|
|
108
|
-
semantic_link_labs-0.7.2.dist-info/METADATA,sha256=LYlyxmPO3esRALDADbyyQR5Fvk8G_uSgmY4cCE6q3qY,11241
|
|
109
|
-
semantic_link_labs-0.7.2.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
|
110
|
-
semantic_link_labs-0.7.2.dist-info/top_level.txt,sha256=kiQX1y42Dbein1l3Q8jMUYyRulDjdlc2tMepvtrvixQ,11
|
|
111
|
-
semantic_link_labs-0.7.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|