共用方式為


使用 T-SQL 查詢資料

除了主要查詢語言 Kusto 查詢語言 (KQL)之外,Azure 數據總管查詢編輯器還支援使用 T-SQL。 雖然 KQL 是建議的查詢語言,但 T-SQL 對於無法使用 KQL 的工具很有用。

注意

僅支援資料查詢語言 (DQL) 命令。 如需詳細資訊,請參閱 涵蓋範圍

利用 SQL 查詢資料

若要執行 T-SQL 查詢,請使用空的 T-SQL 批注行開始查詢: --。 語法 -- 會指示查詢編輯器將下列查詢解譯為 T-SQL,而不是 KQL。

範例

--
SELECT * FROM StormEvents

要 Kusto 查詢語言 的 T-SQL

查詢編輯器支援將 T-SQL 查詢轉譯為 KQL 的能力。 這項翻譯功能對於熟悉 SQL 的使用者很有説明,而且想要深入瞭解 KQL。

若要取得 T-SQL SELECT 語句的對等 KQL,請在查詢之前新增 關鍵詞 explain 。 輸出將會是查詢的 KQL 版本,這對於了解對應的 KQL 語法和概念很有用。

請記得使用 T-SQL 批注行 --在 T-SQL 查詢前面加上 ,告訴查詢編輯器將下列查詢解譯為 T-SQL,而不是 KQL。

範例

--
explain
SELECT top(10) *
FROM StormEvents
ORDER BY DamageProperty DESC

輸出

StormEvents
| project
    StartTime,
    EndTime,
    EpisodeId,
    EventId,
    State,
    EventType,
    InjuriesDirect,
    InjuriesIndirect,
    DeathsDirect,
    DeathsIndirect,
    DamageProperty,
    DamageCrops,
    Source,
    BeginLocation,
    EndLocation,
    BeginLat,
    BeginLon,
    EndLat,
    EndLon,
    EpisodeNarrative,
    EventNarrative,
    StormSummary
| sort by DamageProperty desc nulls first
| take int(10)

執行預存函式

使用 T-SQL 時,建議您建立優化的 KQL 查詢,並將其封裝在預存函式中,因為這樣做會將 T-SQL 程式代碼降到最低,而且可能會提高效能。 例如,如果您有如下表中所述的預存函式,您可以執行它,如程式代碼範例所示。

名稱 參數 本文 Folder DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder 具有參數的示範函式
SELECT * FROM kusto.MyFunction(10)

注意

若要區分預存函式和仿真的 SQL 系統預存程式,請使用明確參考 kusto 架構來執行預存函式。 在此範例中,會使用 kusto.Myfunction來執行預存函式。

設定要求屬性

要求屬性 會控制查詢的執行方式,並傳回結果。 若要使用 T-SQL 設定要求屬性,請使用下列語法在查詢前面加上一或多個語句:

語法

DECLARE@__kql_set_requestPropertyName 類型 = ;

參數

姓名 類型​​ 必要 描述
requestPropertyName string ✔️ 要設定的要求屬性名稱
type string ✔️ 值的 T-SQL 資料類型
value 純量 ✔️ 要指派給要求屬性的值。

注意

  • 兩個語句必須以分號分隔,而且查詢之前不應該有空行。
  • 要求屬性僅適用於緊接著的 表格式表達式語句

範例

下表顯示如何使用 T-SQL 設定要求屬性的範例。

Request 屬性 範例
query_datetimescope_to DECLARE @__kql_set_query_datetimescope_to DATETIME = '2023-03-31 03:02:01';
request_app_name DECLARE @__kql_set_request_app_name NVARCHAR = 'kuku';
query_results_cache_max_age DECLARE @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize DECLARE @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DECLARE @__kql_set_maxoutputcolumns INT = 3001;
notruncation DECLARE @__kql_set_notruncation BIT = 1;
norequesttimeout DECLARE @__kql_set_norequesttimeout BIT = 0;

若要使用 KQL 設定要求屬性,請參閱 set 語句

涵蓋範圍

Azure 數據總管提供有限的 T-SQL 支援。 下表概述不支援或部分支援的 T-SQL 語句和功能。

T-SQL 語句或功能 描述
CREATEINSERTDROPALTER 不支援
架構或數據修改 不支援
ANYALLEXISTS 不支援
WITHIN GROUP 不支援
TOP PERCENT 不支援
TOP WITH TIES 評估為一般 TOP
TRUNCATE 傳回最接近的值
SELECT * 數據行順序可能與預期不同。 如果順序很重要,請使用資料行名稱。
AT TIME ZONE 不支援
SQL 數據指標 不支援
相互關聯的子查詢 不支援
遞迴 CTE 不支援
動態語句 不支援
流程控制語句 IF THEN ELSE支援和具有相同架構THENELSE的語句。
重複的資料行名稱 不支援。 原始名稱會保留一個數據行。
資料類型 傳回的數據可能與 SQL Server 不同。 例如, TINYINTSMALLINT 在 Azure 資料總管中沒有任何對等專案,而且可能會傳回 或 INT32 INT64 ,而不是 BYTEINT16