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 ステートメントまたは機能 | 説明 |
---|---|
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 で同等の種類を持たず、BYTE や INT16 ではなく、INT32 または INT64 として返される場合があります。 |
関連するコンテンツ
- Azure Data Explorer の SQL Server エミュレーションについて
- SQL と Kusto 照会言語のクイック ガイドの使用