Skip to content

Commit 0a95b39

Browse files
committed
949
1 parent c7fcfbb commit 0a95b39

File tree

1 file changed

+25
-75
lines changed

1 file changed

+25
-75
lines changed

src/sempy_labs/tom/_model.py

Lines changed: 25 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -4660,7 +4660,7 @@ def remove_changed_property(self, object, property: str):
46604660
def generate_measure_descriptions(
46614661
self,
46624662
measure_name: Optional[str | List[str]] = None,
4663-
max_batch_size: Optional[int] = 5,
4663+
max_batch_size: Optional[int] = 1,
46644664
) -> pd.DataFrame:
46654665
"""
46664666
Auto-generates descriptions for measures using an LLM. This function requires a paid F-sku (Fabric) of F64 or higher.
@@ -4672,8 +4672,8 @@ def generate_measure_descriptions(
46724672
measure_name : str | List[str], default=None
46734673
The measure name (or a list of measure names).
46744674
Defaults to None which generates descriptions for all measures in the semantic model.
4675-
max_batch_size : int, default=5
4676-
Sets the max batch size for each API call.
4675+
max_batch_size : int, default=1
4676+
Sets the max batch size for each API call. This parameter has been decomissioned.
46774677
46784678
Returns
46794679
-------
@@ -4698,45 +4698,30 @@ def generate_measure_descriptions(
46984698
if isinstance(measure_name, str):
46994699
measure_name = [measure_name]
47004700

4701-
if len(measure_name) > max_batch_size:
4702-
measure_lists = [
4703-
measure_name[i : i + max_batch_size]
4704-
for i in range(0, len(measure_name), max_batch_size)
4705-
]
4706-
else:
4707-
measure_lists = [measure_name]
4708-
4709-
# Each API call can have a max of 5 measures
4710-
for measure_list in measure_lists:
4711-
payload = {
4712-
"scenarioDefinition": {
4713-
"generateModelItemDescriptions": {
4714-
"modelItems": [],
4715-
},
4701+
payload = {
4702+
"scenarioDefinition": {
4703+
"generateModelItemDescriptions": {
4704+
"modelItems": [],
47164705
},
4717-
"workspaceId": self._workspace_id,
4718-
"artifactInfo": {"artifactType": "SemanticModel"},
4719-
}
4720-
for m_name in measure_list:
4721-
expr, t_name = next(
4722-
(ms.Expression, ms.Parent.Name)
4723-
for ms in self.all_measures()
4724-
if ms.Name == m_name
4725-
)
4726-
if t_name is None:
4727-
raise ValueError(
4728-
f"{icons.red_dot} The '{m_name}' measure does not exist in the '{self._dataset_name}' semantic model within the '{self._workspace_name}' workspace."
4729-
)
4706+
},
4707+
"workspaceId": self._workspace_id,
4708+
"artifactInfo": {"artifactType": "SemanticModel"},
4709+
}
47304710

4731-
new_item = {
4732-
"urn": m_name,
4733-
"type": 1,
4734-
"name": m_name,
4735-
"expression": expr,
4736-
}
4737-
payload["scenarioDefinition"]["generateModelItemDescriptions"][
4738-
"modelItems"
4739-
].append(new_item)
4711+
for m in measure_name:
4712+
(table_name, expr) = next(
4713+
(ms.Parent.Name, ms.Expression)
4714+
for ms in self.all_measures()
4715+
if ms.Name == m
4716+
)
4717+
payload["scenarioDefinition"]["generateModelItemDescriptions"][
4718+
"modelItems"
4719+
] = {
4720+
"urn": m,
4721+
"type": 1,
4722+
"name": m,
4723+
"expression": expr,
4724+
}
47404725

47414726
token = notebookutils.credentials.getToken("pbi")
47424727
headers = {"Authorization": f"Bearer {token}"}
@@ -4775,41 +4760,6 @@ def generate_measure_descriptions(
47754760

47764761
return df
47774762

4778-
# def process_measure(m):
4779-
# table_name = m.Parent.Name
4780-
# m_name = m.Name
4781-
# m_name_fixed = "1"
4782-
# expr = m.Expression
4783-
# if measure_name is None or m_name in measure_name:
4784-
# payload = {
4785-
# "scenarioDefinition": {
4786-
# "generateModelItemDescriptions": {
4787-
# "modelItems": [
4788-
# {
4789-
# "urn": f"modelobject://Table/{table_name}/Measure/{m_name_fixed}",
4790-
# "type": 1,
4791-
# "name": m_name,
4792-
# "expression": expr,
4793-
# }
4794-
# ]
4795-
# }
4796-
# },
4797-
# "workspaceId": workspace_id,
4798-
# "artifactInfo": {"artifactType": "SemanticModel"},
4799-
# }
4800-
4801-
# response = client.post(
4802-
# "/explore/v202304/nl2nl/completions", json=payload
4803-
# )
4804-
# if response.status_code != 200:
4805-
# raise FabricHTTPException(response)
4806-
4807-
# desc = response.json()["modelItems"][0]["description"]
4808-
# m.Description = desc
4809-
4810-
# with concurrent.futures.ThreadPoolExecutor() as executor:
4811-
# executor.map(process_measure, self.all_measures())
4812-
48134763
def set_value_filter_behavior(self, value_filter_behavior: str = "Automatic"):
48144764
"""
48154765
Sets the `Value Filter Behavior <https://learn.microsoft.com/power-bi/transform-model/value-filter-behavior>`_ property for the semantic model.

0 commit comments

Comments
 (0)