Jalankan kueri KQL dan fungsi tersimpan dengan emulasi SQL Server

Azure Data Explorer menyediakan titik akhir Tabular Data Stream (TDS) yang memungkinkan Anda mengkueri data dengan cara yang mirip dengan cara mengkueri data di SQL Server. Titik akhir mendukung TDS versi 7.x dan 8.0.

Dalam artikel ini, Anda akan mempelajari cara menjalankan fungsi tersimpan dan kueri Bahasa Kueri Kusto (KQL) dari klien yang kompatibel dengan SQL.

Catatan

Informasi dalam artikel ini berlaku untuk menjalankan panggilan parameter melalui protokol TDS, juga dikenal sebagai panggilan RPC.

Untuk informasi selengkapnya, lihat gambaran umum tentang emulasi SQL Server di Azure Data Explorer.

Menjalankan kueri KQL

Prosedur sp_execute_kql tersimpan SQL dapat digunakan untuk menjalankan kueri KQL , termasuk kueri berparameter. Prosedur ini mirip dengan prosedur tersimpan sp_executesql.

Catatan

Prosedur sp_execute_kql hanya dapat dipanggil melalui panggilan RPC seperti yang ditunjukkan dalam contoh berikut dan bukan dari dalam kueri SQL biasa.

Parameter sp_execute_kql pertama adalah kueri KQL, dan parameter lainnya diperlakukan sebagai parameter kueri. Contoh berikut menunjukkan cara menggunakan sp_execute_kql.

  using (var connection = new SqlConnection(csb.ToString()))
  {
    await connection.OpenAsync();
    using (var command = new SqlCommand("sp_execute_kql", connection))
    {
      command.CommandType = CommandType.StoredProcedure;
      var query = new SqlParameter("@kql_query", SqlDbType.NVarChar);
      command.Parameters.Add(query);
      var parameter = new SqlParameter("mylimit", SqlDbType.Int);
      command.Parameters.Add(parameter);
      query.Value = "StormEvents | take myLimit";
      parameter.Value = 3;
      using (var reader = await command.ExecuteReaderAsync())
      {
        // Read the response.
      }
    }
  }

Catatan

Saat memanggil sp_execute_kql melalui TDS, jenis parameter diatur oleh protokol dan tidak perlu dinyatakan.

Memanggil fungsi tersimpan

Anda dapat membuat dan memanggil fungsi tersimpan seperti prosedur tersimpan SQL. Misalnya, jika Anda memiliki fungsi tersimpan seperti yang dijelaskan dalam tabel berikut, Anda dapat memanggilnya seperti yang ditunjukkan dalam contoh kode.

Nama Parameter Isi Folder DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Fungsi demo dengan parameter
  using (var connection = new SqlConnection(csb.ToString()))
  {
    await connection.OpenAsync();
    using (var command = new SqlCommand("kusto.MyFunction", connection))
    {
      command.CommandType = CommandType.StoredProcedure;
      var parameter = new SqlParameter("mylimit", SqlDbType.Int);
      command.Parameters.Add(parameter);
      parameter.Value = 3;
      using (var reader = await command.ExecuteReaderAsync())
      {
        // Read the response.
      }
    }
  }

Catatan

Untuk membedakan antara fungsi yang disimpan dan prosedur tersimpan sistem SQL yang ditiru, panggil fungsi tersimpan dengan referensi eksplisit ke kusto skema. Dalam contoh, fungsi tersimpan disebut menggunakan kusto.Myfunction.