Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount.
Register nowThe Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.
I'm currently using Azure Cognitive Services for the first. I've managed to get the Text Analysis to work but am struggling to get the sentiment analysis to work as it's just returning errors for all rows.
I'm following the instructions from the MS Tutorial - https://docs.microsoft.com/en-us/azure/cognitive-services/text-analytics/tutorials/tutorial-power-bi... plus some additional research & watching video's but I can't work out where I've gone wrong!
This is the code I'm using:
let
apikey = "MY.API.KEY",
endpoint = "https://MYSUBDOMAIN.cognitiveservices.azure.com" & "/text/analytics/v3.0/sentiment",
jsontext = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
jsonbody = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
bytesbody = Text.ToBinary(jsonbody),
headers = [#"Ocp-Apim-Subscription-Key" = apikey],
bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
jsonresp = Json.Document(bytesresp),
sentiment = jsonresp[documents]{0}[detectedLanguage][confidenceScore] in sentiment
I then go to my query with the data to analyse, Invoke Custom Function - choose the above function but the returns the results as an error:
Really hoping someone's got some advice because this is breaking my brain!!
Solved! Go to Solution.
@amitchandak just wanted to give you an update, I've finally managed to get the sentiment analysis to work!!
I created parameters for the code so it ended up looking like this:
(text) => let
apikey = APIKey,
endpoint = Endpoint& "/text/analytics/v3.0/"&Service,
jsontext = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
jsonbody = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
bytesbody = Text.ToBinary(jsonbody),
headers = [#"Ocp-Apim-Subscription-Key" = apikey],
bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
jsonresp = Json.Document(bytesresp)
in jsonresp
I also had a parameter for language replacing the ""en"" but this didn't work so reverted but to the orginal
I'm so happy it worked in the end!!
@amitchandak just wanted to give you an update, I've finally managed to get the sentiment analysis to work!!
I created parameters for the code so it ended up looking like this:
(text) => let
apikey = APIKey,
endpoint = Endpoint& "/text/analytics/v3.0/"&Service,
jsontext = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
jsonbody = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
bytesbody = Text.ToBinary(jsonbody),
headers = [#"Ocp-Apim-Subscription-Key" = apikey],
bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
jsonresp = Json.Document(bytesresp)
in jsonresp
I also had a parameter for language replacing the ""en"" but this didn't work so reverted but to the orginal
I'm so happy it worked in the end!!
@amitchandak So I've tried stripping back the query so there are less steps involved but it's still returning an error.
@amitchandak this is the erro:
An error occurred in the ‘’ query. Expression.Error: The field 'detectedLanguage' of the record wasn't found.
Details:
id=0
sentiment=positive
confidenceScores=
positive=1
neutral=0
negative=0
sentences=[List]
warnings=[List]
@amitchandak I have removed columns prior to Invoked Custom Function. I've also got the text analysis custom function in the same query, I'll try it in a fresh query no & see if it makes a difference
User | Count |
---|---|
122 | |
69 | |
67 | |
58 | |
52 |
User | Count |
---|---|
189 | |
96 | |
67 | |
63 | |
53 |