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 ステートメントまたは機能 | 説明 |
---|---|
CREATE 、INSERT 、DROP 、および ALTER |
サポートされていません |
スキーマまたはデータの変更 | サポートされていません |
ANY 、ALL 、EXISTS |
サポートされていません |
WITHIN GROUP |
サポートされていません |
TOP PERCENT |
サポートされていません |
TOP WITH TIES |
標準として評価される TOP |
TRUNCATE |
最も近い値を返します |
SELECT * |
列の順序は予想と異なる場合があります。 順序が重要な場合は、列名を使用します。 |
AT TIME ZONE |
サポートされていません |
SQL カーソル | サポートされていません |
相関サブクエリ | サポートされていません |
再帰 CTE | サポートされていません |
動的ステートメント | サポートされていません |
フロー制御ステートメント | と に対して同じスキーマTHEN ELSE を持つステートメントのみがIF THEN ELSE サポートされます。 |
重複する列名 | サポートされていません。 元の名前は、1 つの列に対して保持されます。 |
データ型 | 返されるデータの種類は、SQL Serverとは異なる場合があります。 たとえば、 TINYINT と SMALLINT は Azure Data Explorerで同等のを持たず、 または INT16 の代わりに BYTE または INT64 をINT32 返す場合があります。 |
関連コンテンツ
- Azure Data Explorer でのエミュレーションSQL Serverについて説明します
- SQL を使用してチート シートをKusto 照会言語する
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示