文字列データ型
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
データ型 string
は、0 個以上の Unicode 文字のシーケンスを表します。
文字列クエリ演算子の詳細については、「 String 演算子」を参照してください。
Note
- 内部的には、文字列は UTF-8 でエンコードされます。 無効な (UTF8 以外の) 文字は、インジェスト時に U+FFFD Unicode 置換文字に置き換えられます。
- Kusto には、1 つの文字と等価なデータ型がありません。 1 つの文字は、長さ 1 の文字列として表されます。
string
データ型を取り込むときに、レコード内の 1 つの文字列値が 1 MB を超えた場合 (UTF-8 エンコードを使用して測定)、値が切り捨てられ、取り込みが成功します。 レコードまたはレコード全体の 1 つの文字列値が、許可されるデータ制限の 64 MB を超えた場合、インジェストは失敗します。string
データ型を取り込むときに、レコード内の 1 つの文字列値が 1 MB を超えた場合 (UTF-8 エンコードを使用して測定)、値が切り捨てられ、取り込みが成功します。 列のMaxValueSize
を増やすには、列の のポリシーを変更します。- レコードまたはレコード全体の 1 つの文字列値が、許可されるデータ制限の 64 MB を超えた場合、インジェストは失敗します。
string
リテラル
文字列リテラルは、引用符で囲まれた文字列です。 二重引用符または単一引用符を使用して、クエリ テキスト内の文字列リテラルをエンコードできます。 二重引用符では、入れ子になった二重引用符文字を円記号 (\
) でエスケープする必要があります。 単一引用符では、入れ子になった単一引用符文字をエスケープする必要があり、二重引用符をエスケープする必要はありません。
円記号を使用して、囲む引用符文字、タブ文字 (\t
)、改行文字 (\n
)、円記号自体 (\\
) をエスケープします。
Note
改行文字 (\n
) と戻り文字 (\r
) は、複数行の文字列リテラル 使用しない限り、引用符で囲む必要があります。
逐語的な文字列リテラル
Verbatim 文字列リテラルは、逐語的な識別子として機能する、 @
文字の先頭に付加された文字列リテラルです。 この形式では、円記号 (\
) はそれ自体を表し、エスケープ文字ではありません。 逐語的な文字列リテラルでは、二重引用符は二重引用符でエスケープされ、一重引用符は一重引用符でエスケープされます。
例については、 Verbatim 文字列を参照してください。
Note
改行文字 (\n
) と戻り文字 (\r
) は、複数行の文字列リテラル 使用しない限り、引用符で囲む必要があります。
複数行の文字列リテラル
リテラルの先頭と末尾に "3-backtick コード" (''') で複数行の文字列リテラルを示します。
例については、「 複数行の文字列リテラルを参照してください。
Note
- 複数行の文字列リテラルは、改行 (
\n
) 文字と戻り値 (\r
) 文字をサポートします。 - 複数行の文字列リテラルは、エスケープ文字をサポートしていません。 verbatim 文字列リテラルに似ています。
- 複数行の文字列リテラルは、 obfuscationをサポートしていません。
区切り文字列リテラルの連結
Kusto クエリでは、2 つ以上の隣接する文字列リテラルの間に分離がない場合、それらは自動的に結合され、新しい文字列リテラルが形成されます。 同様に、文字列リテラルが空白またはコメントのみで区切られている場合は、新しい文字列リテラルを形成するためにも結合されます。
例については、「 Concatenated 文字列リテラル」を参照してください。
難読化文字列リテラル
クエリは、テレメトリと分析のために格納されます。 パスワードやシークレットなどの機密情報を保護するために、文字列を 難読化文字列リテラルとしてマーク。 これらのマークされた文字列は、難読化された形式でログに記録され、クエリ テキストのアスタリスク (*
) に置き換えられます。
難読化文字列リテラルは、標準リテラルまたは逐語的な文字列リテラルの前に h
または H
文字 プリペンドすることによって作成。
例については、 Obfuscated 文字列リテラルを参照してください。
重要
シークレット情報を含むすべての文字列リテラルを難読化文字列リテラルとしてマークします。
ヒント
状況によっては、文字列リテラルの一部にのみシークレット情報が含まれます。 このような場合は、リテラルをシークレット以外の部分とシークレット部分に分割します。 次に、シークレット部分のみに難読化のラベルを付けます。
例
引用符で囲まれた文字列リテラル
次の例では、単一引用符と二重引用符で囲まれた文字列リテラル内で引用符を使用する方法を示します。 詳細については、「 String リテラル」を参照してください。
print
s1 = 'string with "double quotes"',
s2 = "string with 'single quotes'"
出力
s1 | s2 |
---|---|
"二重引用符" を含む文字列 | '単一引用符' の文字列 |
円記号がエスケープされた文字列リテラル
次の例では、特殊文字をエスケープするために円記号を使用して正規表現パターンを作成します。 詳細については、「 String リテラル」を参照してください。
print pattern = '\\n.*(>|\'|=|\")[a-zA-Z0-9/+]{86}=='
出力
pattern |
---|
\n.*(>|'|=|")[a-zA-Z0-9/+]{86}== |
Unicode を使用した文字列リテラル
次の例は、文字列リテラルに Unicode 文字を含めるために円記号が必要であることを示しています。
print space = "Hello\u00A0World"
出力
空白 |
---|
Hello World |
逐語的文字列リテラル
次の例では、円記号がエスケープ文字ではなくパスの一部であるパスを作成します。 これを行うには、文字列 @
記号の前に文字列が付加され、 verbatim 文字列リテラルが作成されます。
print myPath = @'C:\Folder\filename.txt'
出力
myPath |
---|
C:\Folder\filename.txt |
複数行の文字列リテラル
次の例は、改行とタブを使用してコード ブロックのスタイルを設定する複数行の文字列リテラルの構文を示しています。 詳細については、「 複数行の文字列リテラル」を参照してください。
print program = ```
public class Program {
public static void Main() {
System.Console.WriteLine("Hello!");
}
}```
出力
プログラム |
---|
public class Program { public static void Main() { System.Console.WriteLine("Hello!"); } } |
連結された文字列リテラル
次の式はすべて、長さ 13 の文字列を生成します。 詳細については、「 区切り文字列リテラルの格納」を参照してください。
print
none = strlen("Hello"', '@"world!"),
whitespace = strlen("Hello" ', ' @"world!"),
whitespaceAndComment = strlen("Hello"
// Comment
', '@"world!"
);
出力
なし | whitespace | whitespaceAndComment |
---|---|---|
13 | 13 | 13 |
難読化文字列リテラル
次のクエリ出力では、 h
文字列が結果に表示されます。 ただし、トレースまたはテレメトリでは、 h
文字列は難読化された形式で格納され、ログにアスタリスクで置き換えます。 詳細については、「 Obfuscated 文字列リテラルを参照してください。
print blob="https://contoso.blob.core.windows.net/container/blob.txt?"
h'sv=2012-02-12&se=2013-04-13T0...'
出力
blob |
---|
https://contoso.blob.core.windows.net/container/blob.txt?sv=2012-02-12&se=2013-04-13T0... |