Forum Discussion
eramirez
9 years agoFrequent Visitor
Custom Data Connector Power BI, fill List with json response
Hi, I'm trying to create a Custom Data Connector for Power Bi, which I want to display a list from a json response, if I hardcode the list the selector displays fine, but if I try to fill the selec...
Eric_Zhang
9 years agoMicrosoft Employee
Could you zip your project from visual studio and share it with me?
- eramirez9 years agoFrequent Visitor
Eric_Zhang wrote:Could you zip your project from visual studio and share it with me?
Hi Eric, I just created a project in visual studio of type Data Connector Project and the only file that I got is the .pq file with this
// This file contains your Data Connector logic section TestConnector; [DataSource.Kind="TestConnector", Publish="TestConnector.Publish"] shared TestConnector.Contents = Value.ReplaceType(TestConnectorImpl, TestConnectorType); shared listTest = getDataFromUrl; TestConnectorType = type function ( count as (type text meta [ Documentation.FieldCaption = "Count", Documentation.FieldDescription = "Number of times to repeat the message", Documentation.AllowedValues = listTest ])) as table meta [ Documentation.Name = "Hello - Name", Documentation.LongDescription = "Hello - Long Description", Documentation.Examples = {[ Description = "Another example, new message, new count!", Code = "HelloWorldWithDocs.Contents(""Goodbye"", 1)", Result = "#table({""Column1""}, {{""Goodbye""}})" ]} ]; TestConnectorImpl = (count as number) as table => let _count = count, listOfMessages = List.Repeat({_count},_count), table = Table.FromList(listOfMessages, Splitter.SplitByNothing()) in table; getDataFromUrl = let url = "http://localhost:8080/jsontest/", source = Web.Contents(url, [ Headers = DefaultRequestHeaders ]), xml = Xml.Tables(source), SessionState = Table.ExpandTableColumn(xml,"session-states",{"min-state"}), ss = Table.Column(SessionState,"min-state"), reportArray = Table.Column(SessionState,"report-array"), textJson = Lines.ToText(reportArray), json = Json.Document(textJson), ids = Table.FromRecords(json,{"name"}), list = Table.ToList(ids), test = {1,2,3} in list; // Data Source Kind description TestConnector = [ Authentication = [ // Key = [], // UsernamePassword = [], // Windows = [], Implicit = [] ], Label = "Test Connector" ]; // Data Source UI publishing description TestConnector.Publish = [ Beta = true, Category = "Other", ButtonText = { Extension.LoadString("ButtonTitle"), Extension.LoadString("ButtonHelp") }, LearnMoreUrl = "https://powerbi.microsoft.com/", SourceImage = TestConnector.Icons, SourceTypeImage = TestConnector.Icons ]; TestConnector.Icons = [ Icon16 = { Extension.Contents("TestConnector16.png"), Extension.Contents("TestConnector20.png"), Extension.Contents("TestConnector24.png"), Extension.Contents("TestConnector32.png") }, Icon32 = { Extension.Contents("TestConnector32.png"), Extension.Contents("TestConnector40.png"), Extension.Contents("TestConnector48.png"), Extension.Contents("TestConnector64.png") } ]; DefaultRequestHeaders = [ #"Accept" = "application/json;odata.metadata=minimal", // column name and values only #"OData-MaxVersion" = "4.0" // we only support v4 ];and in the url http://localhost:8080/jsontest/, I'm just creating a local service created in Java (just for testing because the remote url is also in development) that only returns this string as xml
"<taskResponse statusCode=\"200\"><report-array>[{\"id\":\"1\",\"name\":\"1\"},{\"id\":\"2\",\"name\":\"2\"},{\"id\":\"3\",\"name\":\"3\"}]</report-array><session-states><min-state>true</min-state></session-states></taskResponse>"
Regards