次の方法で共有


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

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

Note

データ クエリ言語 (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 を取得するには、クエリの前にキーワード 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 type = value;

パラメーター

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

Note

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

次の表は、T-SQL で要求プロパティを設定する方法の例を示しています。

要求プロパティ
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 で同等の種類を持たず、BYTEINT16 ではなく、INT32 または INT64 として返される場合があります。