T-SQL を使用してデータのクエリを実行する

Azure Data Explorer クエリ エディターでは、主要なクエリ言語である Kusto クエリ言語 (KQL) に加えて、T-SQL の使用がサポートされています。 KQL は推奨されるクエリ言語ですが、T-SQL は KQL を使用できないツールの場合に役立つことがあります。

注意

データ クエリ言語 (DQL) コマンドのみがサポートされています。 詳細については、「 カバレッジ」を参照してください。

T-SQL を使用したクエリ

T-SQL クエリを実行するには、空の T-SQL コメント行 ( ) --でクエリを開始します。 構文は -- 、次のクエリを KQL ではなく T-SQL として解釈するようにクエリ エディターに指示します。

--
SELECT * FROM StormEvents

T-SQL からKusto 照会言語

クエリ エディターでは、T-SQL クエリを KQL に変換する機能がサポートされています。 この翻訳機能は、SQL に精通しており、KQL の詳細を知りたいユーザーに役立ちます。

T-SQL SELECT ステートメントの同等の KQL を取得するには、クエリの前に キーワード (keyword)explainを追加します。 出力はクエリの KQL バージョンになります。これは、対応する KQL 構文と概念を理解するのに役立ちます。

T-SQL コメント行 を使用して T-SQL クエリの前にを置き、 --次のクエリを KQL ではなく T-SQL として解釈するようにクエリ エディターに指示してください。

--
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 コードが最小限に抑え、パフォーマンスが向上する可能性があるためです。 たとえば、次の表で説明するようにストアド関数がある場合は、コード例に示すように実行できます。

名前 パラメーター 本文 フォルダー DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder パラメーターを使用したデモ関数
SELECT * FROM kusto.MyFunction(10)

Note

ストアド関数とエミュレートされた SQL システム ストアド プロシージャを区別するには、スキーマへの明示的な参照を使用してストアド関数を kusto 実行します。 この例では、ストアド関数は kusto.Myfunction を使用して実行されます。

要求プロパティを設定する

要求プロパティは 、クエリを実行して結果を返す方法を制御します。 T-SQL で要求プロパティを設定するには、次の構文を使用して 1 つ以上のステートメントを使用してクエリの前に記述します。

構文

DECLARE@__kql_set_requestPropertyName=の値;

パラメーター

名前 必須 説明
requestPropertyName string ✔️ 設定する 要求プロパティ の名前。
type string ✔️ の T-SQL データ型
value スカラー (scalar) ✔️ 要求プロパティに割り当てる値。

注意

  • 2 つのステートメントはセミコロンで区切る必要があり、クエリの前に空の行は存在しない必要があります。
  • 要求プロパティは、すぐに続く 表形式の式ステートメント にのみ適用されます。

次の表は、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 Data Explorer では、T-SQL のサポートが制限されています。 次の表は、サポートされていない、または部分的にサポートされている T-SQL ステートメントと機能の概要を示しています。

T-SQL ステートメントまたは機能 説明
CREATEINSERTDROP、および ALTER サポートされていません
スキーマまたはデータの変更 サポートされていません
ANYALLEXISTS サポートされていません
WITHIN GROUP サポートされていません
TOP PERCENT サポートされていません
TOP WITH TIES 標準として評価される TOP
TRUNCATE 最も近い値を返します
SELECT * 列の順序は予想と異なる場合があります。 順序が重要な場合は、列名を使用します。
AT TIME ZONE サポートされていません
SQL カーソル サポートされていません
相関サブクエリ サポートされていません
再帰 CTE サポートされていません
動的ステートメント サポートされていません
フロー制御ステートメント と に対して同じスキーマTHENELSEを持つステートメントのみがIFTHENELSEサポートされます。
重複する列名 サポートされていません。 元の名前は、1 つの列に対して保持されます。
データ型 返されるデータの種類は、SQL Serverとは異なる場合があります。 たとえば、 TINYINTSMALLINT は Azure Data Explorerで同等のを持たず、 または INT16の代わりに BYTE または INT64INT32返す場合があります。