Querying with the DataReader
The CData ADO.NET Provider for Microsoft Power BI XMLA implements two ADO.NET interfaces you can use to retrieve data from Microsoft Power BI XMLA: PowerBIXMLADataAdapter and PowerBIXMLADataReader objects. Whereas PowerBIXMLADataAdapter objects retrieve a single result set of all the data that matches a query, PowerBIXMLADataReader objects fetch data in subset increments as needed.
Using the PowerBIXMLADataReader
The PowerBIXMLADataReader retrieves data faster than the PowerBIXMLADataAdapter because it can retrieve data in pages. As you read data from the PowerBIXMLADataReader, it periodically requests the next page of results from the data source, if required. This causes results to be returned at a faster rate. The following example selects all the columns from the [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer table:
C#
string connectionString = "initiateoauth=GETANDREFRESH"; using (PowerBIXMLAConnection connection = new PowerBIXMLAConnection(connectionString)) { PowerBIXMLACommand cmd = new PowerBIXMLACommand("SELECT * FROM [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer", connection); PowerBIXMLADataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { Console.WriteLine(String.Format("\t{0} --> \t\t{1}", rdr["Country"], rdr["Education"])); } }
VB.NET
Dim connectionString As String = "initiateoauth=GETANDREFRESH" Using connection As New PowerBIXMLAConnection(connectionString) Dim cmd As New PowerBIXMLACommand("SELECT * FROM [AdventureWorksDW2012Multidimensional-SE].[Adventure Works].Customer", connection) Dim rdr As PowerBIXMLADataReader = cmd.ExecuteReader() While rdr.Read() Console.WriteLine([String].Format(vbTab & "{0} --> " & vbTab & vbTab & "{1}", rdr("Country"), rdr("Education"))) End While End Using