@@ -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