I would like to create a web application where to run ADX queries.
I followed the instruction here https://learn.microsoft.com/en-us/azure/data-explorer/provision-azure-ad-app
to create and register the AAD application with ADX
Here the code
var kustoConnectionStringBuilder = new KustoConnectionStringBuilder(<ADX cluster uri/database>);
kustoConnectionStringBuilder.WithAadApplicationKeyAuthentication(<ApplicationId>, <Application Secret>, <TenantID>);
var kustoClient = KustoClientFactory.CreateCslQueryProvider(kustoConnectionStringBuilder.ConnectionString);
var query = "AdtPropertyEvents\r\n| count";
var reader = kustoClient.ExecuteQuery(query);
The ExecuteQuery call is giving an unauthorized error
I followed the same document and I created an application with the necessary API permission user_impersonation
to access azure data explorer and make sure to grant admin consent to your permission like below:
You need to create the database and add permission to your Application like below:
Once you have added you can follow this code to run the query using C#
Code:
using Kusto.Data;
using Kusto.Data.Net.Client;
using static System.Net.WebRequestMethods;
class Program
{
static void Main(string[] args)
{
// Replace placeholders with actual values
string clusterUri = "https://<clustername>.<location>.kusto.windows.net";
string database = "your-database-name";
string applicationId = "your-app-id";
string applicationSecret = "your-app-secret";
string tenantId = "your tenant id";
var kcp = new KustoConnectionStringBuilder(clusterUri, database).WithAadApplicationKeyAuthentication(applicationId, applicationSecret, tenantId);
var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcp);
string query = "table1 | count";
var reader =kustoClient.ExecuteQuery(query);
while (reader.Read())
{
Console.WriteLine(reader.GetInt64(0));
}
}
}
Output:
The above code was executed and successfully returned the count of table1 in my database.
1000