使用ChatGPT生成Power BI DAX说明
同事的一句话印象特别深刻,最讨厌两件事:一是别人不写文档;二是自己要写文档。嗯,其实,我也是这样,虽然一直在部门里推文档留存,打造部门的知识库,但真的很讨厌写文档,特别是写度量值的说明文档。
但是,现在我们可以交给AI来写啊,先来问一个简单的,(这里使用的是Search · chatbox — 搜索 · 聊天框 (github.com), 需要使用自己的Key来使用,还好先前注册的账号还有18美元的额度可以用来调用API,如果有VISA信用卡的朋友也可以申请Azure的试用,目前可以免费使用一年chatgpt3.5)
现在,问题又来了,一个个来chatgpt中翻译也太麻烦了,能不能使用脚本来批量生成呢?
然而,chatgpt给我的这个库并没有连接本地文件的这个功能,那只能通过其他方法了,在之前有写过PowerBI使用Tabular Editor翻译报表模型,当然也可以调用接口来添加度量说明吧,还是直接问chatgpt吧
很遗憾,这段代码有语法错误,而我又不会c#代码,懒得去折腾,既然方法是行的通的,那就github上搜索别人的代码
Update Tabular Model Descriptions from ChatGPT with rate limiting logic (github.com)
#r "System.Net.Http" using System.Net.Http; using System.Text; using Newtonsoft.Json.Linq; // You need to signin to https://platform.openai.com/ and create an API key for your profile then paste that key // into the apiKey constant below const string apiKey = "自己的key"; const string uri = "https://api.openai.com/v1/completions"; const string question = "解释下面的度量,但不要使用函数名称:\n\n"; using (var client = new HttpClient()) { client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + apiKey); foreach (var t in Model.Tables) { foreach ( var m in t.Measures) { // Only uncomment the following when running from the command line or the script will // show a popup after each measure //Info("Processing " + m.DaxObjectFullName) //var body = new requestBody() { prompt = question + m.Expression }; var body = "{ \"prompt\": " + JsonConvert.SerializeObject( question + m.Expression ) + ",\"model\": \"text-davinci-003\" " + ",\"temperature\": 1 " + ",\"max_tokens\": 2048 " + ",\"stop\": \".\" }"; var res = client.PostAsync(uri, new StringContent(body, Encoding.UTF8,"application/json")); res.Result.EnsureSuccessStatusCode(); var result = res.Result.Content.ReadAsStringAsync().Result; var obj = JObject.Parse(result); var desc = obj["choices"][0]["text"].ToString().Trim(); m.Description = desc + "\n=====\n" + m.Expression; } } }
可以看下效果,这里要注意调用接口是有频率限制的,而且每次生成结果也会不同
有了度量值说明,之后就使用DMV语句查询所有度量的说明并导出了,当然也可以使用现在的外部工具,感兴趣可以阅读
用报表说明PowerBI报表
PowerBI 中使用DMV获取数据
DMV 语句