Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowTry your skills in the Power BI Dataviz World Championship! Round one ends June 26. Join now
I amd building a custom PBI Desktop connector with the sdk:
I have these 2 files:
*.pq
section MyConnector;
// Define the data source function
MyConnectorImpl = (Url as text, Token as text) as table =>
let
actualUrl = Url,
record = [
token = Token,
content = "record",
format = "csv"
],
body = Text.ToBinary(Uri.BuildQueryString(record)),
options = [
Headers = [#"Content-type" = "application/x-www-form-urlencoded"],
Content = body
],
result = Web.Contents(actualUrl, options),
#"Imported CSV" = Csv.Document(result, [Delimiter = ",", Encoding = 65001, QuoteStyle = QuoteStyle.Csv]),
#"Promoted Headers" = Table.PromoteHeaders(#"Imported CSV", [PromoteAllScalars = true])
in
#"Promoted Headers";
// Define the type for the data source function
MyConnectorType = type function (
Url as text,
Token as text
) as table;
*.query.pq
[DataSource.Kind="MyConnector", Publish="MyConnector.Publish"]
shared MyConnector.Contents = Value.ReplaceType(MyConnectorImpl, MyConnectorType);
// Data Source UI publishing description
MyConnector.Publish = [
Beta = true,
Category = "Other",
ButtonText = { "My Connector", "My Connector" },
LearnMoreUrl = "https://example.com"
];
My Error:
Afer I build, then evaluate the query file, I see the following:
[1:48:56 PM] [Info] Detected a newer mez file, about to infer its latest info. 1720763336064, 1536065
[1:48:56 PM] [Info] [Task found] c:\Users\xxxx\.vscode\extensions\powerquery.vscode-powerquery-sdk-0.4.0-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.2.127.3\tools\PQTest.exe info
--extension "d:\repos\Power Query Extensions\MyConnector\bin\AnyCPU\Debug\MyConnector.mez"
--prettyPrint
[1:48:57 PM] [Debug] onModuleLibraryUpdated: []
[1:48:57 PM] [Info] Update last ctime of an inferred mez file to 1720763336064
[1:48:57 PM] [Info] DisplayExtensionInfo result MyConnector
[1:48:57 PM] [Info] [Task found] c:\Users\xxxxxA\.vscode\extensions\powerquery.vscode-powerquery-sdk-0.4.0-win32-x64\.nuget\Microsoft.PowerQuery.SdkTools.2.127.3\tools\PQTest.exe run-test
--extension "d:\repos\Power Query Extensions\MyConnector\bin\AnyCPU\Debug\MyConnector.mez"
--queryFile "d:\repos\Power Query Extensions\MyConnector\MyConnector.query.pq"
--prettyPrint
[1:48:58 PM] [Info] RunTestBattery result [
{
"ActivityId": "094ca3e3-75c4-4112-b34a-1d4075ca94b3",
"DataSourceAnalysis": [],
"Details": "Token ';' expected. Start position: (3, 1). End position (3, 7).",
"EndTime": "2024-07-12T05:48:58.4633242+00:00",
"Method": "PQTest.RunTest",
"Name": "MyConnector.query.pq",
"StartTime": "2024-07-12T05:48:58.4429286+00:00",
"DiagnosticEvents": {},
"RowCount": 0,
"Status": "Failed",
"Type": "PQTest.Expression",
"Error": {
"Message": "Token ';' expected. Start position: (3, 1). End position (3, 7)."
}
}
]
Any incites appreciated
- my thoughts are it's something to do with having 2 input parameters - perhaps not being initialsed correctly when this line is called:
shared MyConnector.Contents = Value.ReplaceType(MyConnectorImpl, MyConnectorType);
Hi @274188A ,
You didn't give the complete code, I'm not sure if the content in your brackets is correct, could you provide the complete code?
Value.ReplaceType - PowerQuery M | Microsoft Learn
Best Regards,
Dino Tao
| User | Count |
|---|---|
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 1 |
| User | Count |
|---|---|
| 11 | |
| 9 | |
| 5 | |
| 4 | |
| 4 |