Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
You can enable custom-tailored AI assistance directly on your report or kick off AI-powered custom workflows.
Example, you can integrate Azure OpenAI into your report to help plan your next proposal while factoring in context from the report. You simply select the influencer and click the ‘Generate AI Suggestion’ button, which runs a Fabric User data function that instantly provides an Azure OpenAI response based on a fully customizable prompt.
Here is the Python code for the user data function that powers this scenario:
import fabric.functions as fn
import logging
import openai
udf = fn.UserDataFunctions()
@udf.connection(argName="sqlDB",alias="Translytical")
@udf.function()
def AISuggestion(sqlDB: fn.FabricSqlConnection, company: str) -> str :
logging.info('Python UDF trigger function processed a request.')
# Establish a connection to the SQL database
connection = sqlDB.connect()
cursor = connection.cursor()
#Get offer status for the company
SQL_read_Command = "SELECT * FROM [dbo].[CompanyStatus] WHERE Company = ?"
cursor.execute(SQL_read_Command, company)
record = cursor.fetchone()
customer_name = record[0]
last_comment = record[10]
#Submit prompt to Azure OpenAI and get an AI suggestion
prompt = "Respond with a short plan that is under 240 characters: I work at Contoso Outdoors, and we collaborate with influencers by offering them offers for custom designed bikes. Pretend we want to collab with the following influencer: " + customer_name +" from company: " + company + ". Here's a comment about their latest feedback " + last_comment + "."
deployment = "gpt-4o"
openai_client = openai.AzureOpenAI(
api_key='<API Key here>',
api_version = "2025-01-01-preview",
azure_endpoint = "https://sico-oai-eus2.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2025-01-01-preview"
)
response = openai_client.chat.completions.create(
model=deployment,
messages=[
{"role": "user", "content": prompt}
]
)
result = response.choices[0].message.content
#Check if there is an exisiting AI suggestion for the company
SQL_read_Command = "SELECT * FROM [dbo].[AISuggestions] WHERE Company = ?"
cursor.execute(SQL_read_Command, company)
if cursor.fetchone():
#if there is an existing AI suggestion record for the company, update just the AI suggestion
SQL_update_command = "UPDATE [dbo].[AISuggestions] SET [AI_suggestion] = ? WHERE [Company] = ?;"
Existing_Suggestion = (result, company)
cursor.execute(SQL_update_command, Existing_Suggestion)
else:
#if there is NOT an existing AI suggestion record for the company, add a new record
SQL_insert_command = "INSERT INTO [dbo].[AISuggestions](Name, Company, AI_suggestion) VALUES(?, ?, ?);"
New_Suggestion = (customer_name, company, result)
cursor.execute(SQL_insert_command, New_Suggestion)
# Commit the transaction
connection.commit()
# Close the connection
cursor.close()
connection.close()
return f"Generated Azure OpenAI suggestion for collaboration ideas with " + customer_name + " from " + company + "."
Feel free to use this code as inspiration for your own custom AI integration scenarios!
@SujataNarayana - Do you know where I can find the .pbix file? In your "Azure OpenAI" suggestion example, how do you keep the box blank until they push "Generate AI Suggestion"? Or is that just because there was no data in the table until you pressed "Generate AI Suggestion"? I would like to replicate that functionalty where the box/card is blank until an AI result is generated, then present it there.
Do you know where I can find the .pbix file?