以下の関数ドキュメントは、system.functions システムテーブルから生成されています。
導入バージョン: v20.1.0
ClickHouseサーバーの完全修飾ドメイン名を返します。
構文
別名 : fullHostName
引数
戻り値
ClickHouseサーバーの完全修飾ドメイン名を返します。String
例
使用例
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘
導入バージョン: v1.1.0
UInt64 型の数値を、ビッグエンディアン形式の MAC アドレスとして解釈します。
対応する MAC アドレスを、AA:BB:CC:DD:EE:FF フォーマット (コロン区切りの16進数表記) の文字列として返します。
構文
引数
戻り値
AA:BB:CC:DD:EE:FF 形式の MAC アドレスを返します。String
例
使用例
SELECT MACNumToString( 149809441867716 ) AS mac_address;
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘
導入バージョン: v1.1.0
MACNumToString の逆関数です。MAC アドレスの形式が不正な場合は、0 を返します。
構文
引数
戻り値
UInt64 型の数値を返します。UInt64
例
使用例
SELECT MACStringToNum( '01:02:03:04:05:06' ) AS mac_numeric;
導入バージョン: v1.1.0
AA:BB:CC:DD:EE:FF 形式の MAC アドレス (コロン区切りの16進数表記) を受け取り、先頭 3 オクテットを UInt64 値として返します。MAC アドレスの形式が無効な場合は 0 を返します。
構文
引数
戻り値
先頭の 3 オクテットを UInt64 の数値として返します。UInt64
例
使用例
SELECT MACStringToOUI( '00:50:56:12:34:56' ) AS oui;
導入バージョン: v25.11.0
セッションユーザーが EXECUTE AS コマンドで切り替えられている場合、この関数は、認証とセッションの作成に使われた元のユーザー名を返します。
別名: authUser()
構文
別名 : authUser
引数
戻り値
認証されたユーザー名。String
例
使用例
EXECUTE as u1;
SELECT currentUser(), authenticatedUser();
┌─currentUser()─┬─authenticatedUser()─┐
│ u1 │ default │
└───────────────┴─────────────────────┘
導入バージョン: v1.1.0
棒グラフを生成します。
x = max の場合は width 文字幅となる、(x - min) に比例した幅の帯を描画します。
帯は 1 文字の 8 分の 1 の精度で描画されます。
構文
bar(x, min, max[, width])
引数
戻り値
Unicodeアートのバーを表す文字列を返します。String
例
使用例
SELECT
toHour(EventTime) AS h,
count () AS c,
bar(c, 0 , 600000 , 20 ) AS bar
FROM test . hits
GROUP BY h
ORDER BY h ASC
┌──h─┬──────c─┬─bar────────────────┐
│ 0 │ 292907 │ █████████▋ │
│ 1 │ 180563 │ ██████ │
│ 2 │ 114861 │ ███▋ │
│ 3 │ 85069 │ ██▋ │
│ 4 │ 68543 │ ██▎ │
│ 5 │ 78116 │ ██▌ │
│ 6 │ 113474 │ ███▋ │
│ 7 │ 170678 │ █████▋ │
│ 8 │ 278380 │ █████████▎ │
│ 9 │ 391053 │ █████████████ │
│ 10 │ 457681 │ ███████████████▎ │
│ 11 │ 493667 │ ████████████████▍ │
│ 12 │ 509641 │ ████████████████▊ │
│ 13 │ 522947 │ █████████████████▍ │
│ 14 │ 539954 │ █████████████████▊ │
│ 15 │ 528460 │ █████████████████▌ │
│ 16 │ 539201 │ █████████████████▊ │
│ 17 │ 523539 │ █████████████████▍ │
│ 18 │ 506467 │ ████████████████▊ │
│ 19 │ 520915 │ █████████████████▎ │
│ 20 │ 521665 │ █████████████████▍ │
│ 21 │ 542078 │ ██████████████████ │
│ 22 │ 493642 │ ████████████████▍ │
│ 23 │ 400397 │ █████████████▎ │
└────┴────────┴────────────────────┘
導入バージョン: v1.1.0
その行を含むブロック の単調増加するシーケンス番号を返します。
返される ブロック 番号はベストエフォートで更新されるため、完全に正確でない場合があります。
構文
引数
戻り値
その行が含まれるデータブロックのシーケンス番号。UInt64
例
基本的な使い方
SELECT blockNumber()
FROM
(
SELECT *
FROM system . numbers
LIMIT 10
) SETTINGS max_block_size = 2
┌─blockNumber()─┐
│ 7 │
│ 7 │
└───────────────┘
┌─blockNumber()─┐
│ 8 │
│ 8 │
└───────────────┘
┌─blockNumber()─┐
│ 9 │
│ 9 │
└───────────────┘
┌─blockNumber()─┐
│ 10 │
│ 10 │
└───────────────┘
┌─blockNumber()─┐
│ 11 │
│ 11 │
└───────────────┘
導入バージョン: v20.3.0
ディスク上にある値ブロックの非圧縮サイズを、バイト単位で返します。
構文
blockSerializedSize(x1[, x2[, ...]])
引数
x1[, x2, ...] — ブロックの非圧縮サイズを取得する対象となる、任意の数の値。Any
戻り値
圧縮されていない値のブロックについて、ディスクに書き込まれるバイト数を返します。UInt64
例
使用例
SELECT blockSerializedSize(maxState( 1 )) AS x;
導入バージョン: v1.1.0
ClickHouse では、クエリは ブロック (chunk) 単位で処理されます。
この関数は、呼び出し対象のブロックのサイズ (行数) を返します。
構文
引数
戻り値
現在のブロック内の行数を返します。UInt64
例
使用例
SELECT blockSize ()
FROM system . numbers LIMIT 5
┌─blockSize()─┐
│ 5 │
│ 5 │
│ 5 │
│ 5 │
│ 5 │
└─────────────┘
導入バージョン: v20.5.0
実行中の ClickHouseサーバー バイナリについて、コンパイラが生成したビルド ID を返します。
分散テーブルのコンテキストで実行した場合、この関数は各分片に対応する値を持つ通常のカラムを返します。
それ以外の場合は、定数値を返します。
構文
引数
戻り値
ビルドIDを返します。 String
例
使用例
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘
導入バージョン: v21.1.0
メモリ内における引数の非圧縮バイトサイズの推定値を返します。
String 型の引数の場合、この関数は文字列の長さ + 8 (長さ) を返します。
この関数に複数の引数がある場合、それらのバイトサイズの合計を返します。
構文
byteSize(arg1[, arg2, ...])
引数
arg1[, arg2, ...] — 非圧縮時のバイトサイズを推定する対象となる、任意のデータ型の値。Any
戻り値
メモリ内における引数のバイトサイズの推定値を返します。UInt64
例
使用例
SELECT byteSize( 'string' )
┌─byteSize('string')─┐
│ 15 │
└────────────────────┘
複数の引数
SELECT byteSize( NULL , 1 , 0 . 3 , '' )
┌─byteSize(NULL, 1, 0.3, '')─┐
│ 19 │
└────────────────────────────┘
導入バージョン: v22.9.0
外部のCatBoostモデルを評価します。CatBoost は、機械学習向けに Yandex が開発したオープンソースの勾配ブースティングライブラリです。
CatBoost モデルへのパスと、モデル引数 (特徴量) を受け取ります。
前提条件
catboost 評価ライブラリをビルドする
CatBoost モデルを評価する前に、libcatboostmodel.<so|dylib> ライブラリを利用できる状態にしておく必要があります。コンパイル方法については、CatBoost documentation を参照してください。
次に、libcatboostmodel.<so|dylib> へのパスを ClickHouse の設定で指定します:
< clickhouse >
...
< catboost_lib_path > /path/to/libcatboostmodel.so </ catboost_lib_path >
...
</ clickhouse >
セキュリティと分離のため、モデルの評価はサーバープロセス内では実行されず、clickhouse-library-bridgeプロセス内で実行されます。
catboostEvaluate() を最初に実行すると、まだ起動していない場合は、サーバーが library bridge プロセスを起動します。両プロセスは
HTTPインターフェイスを使用して通信します。デフォルトではポート 9012 が使用されます。別のポートは次のように指定できます。これは、ポート
9012 がすでに別のサービスに割り当てられている場合に便利です。
< library_bridge >
< port > 9019 </ port >
</ library_bridge >
libcatboost を使用して CatBoost モデルを学習します
トレーニングデータセットから CatBoost モデルを学習する方法については、モデルの学習と適用 を参照してください。
構文
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])
引数
戻り値
モデルの評価結果。Float64
例
catboostEvaluate
SELECT catboostEvaluate( '/root/occupy.bin' , Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
導入バージョン: v26.2.0
色を OKLab 知覚色空間から sRGB 色空間に変換します。
入力色は OKLab 色空間で指定します。入力値が
一般的な OKLab の範囲外にある場合、結果は実装依存になります。
OKLab は 3 つの部分を使用します。
L: 知覚的な明度 (通常は [0..1] の範囲)
a および b の部分は理論上は無制限ですが、実際には -0.4 から 0.4 の範囲に収まります。
OKLab は、コンピュートコストを低く抑えつつ、
知覚的に一様になるよう設計されています。
この変換は colorSRGBToOKLAB の逆変換となることを意図しており、
次の段階で構成されます。
OKLab から Linear sRGB への変換。
2) Linear sRGB からガンマエンコードされた sRGB への変換。
オプションの gamma 引数は、Linear
sRGB からガンマエンコードされた RGB 値への変換時に使用する指数を指定します。指定しない場合は、colorSRGBToOKLAB との一貫性を保つため、
既定の gamma 値が使用されます。
OKLab 色空間とその sRGB との関係の詳細については、https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color_value/oklab
を参照してください。
構文
colorOKLABToSRGB(tuple [, gamma])
引数
戻り値
sRGB の色値を表すタプル (R, G, B) を返します。Tuple(Float64, Float64, Float64)
例
OKLAB を sRGB (Float) に変換
SELECT colorOKLABToSRGB(( 0 . 4466 , 0 . 0991 , 0 . 44 )) AS rgb;
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘
OKLABをsRGB (UInt8) に変換
WITH colorOKLABToSRGB(( 0 . 7 , 0 . 1 , 0 . 54 )) AS t
SELECT tuple(toUInt8( t . 1 ), toUInt8( t . 2 ), toUInt8( t . 3 )) AS RGB;
┌─RGB──────────┐
│ (255,0,0) │
└──────────────┘
導入バージョン: v25.7.0
色を OKLCH 知覚色空間から、一般的な sRGB 色空間に変換します。
L が範囲 [0...1] 外にある場合、C が負の場合、または H が範囲 [0...360] 外にある場合、結果は実装依存です。
OKLCH は、OKLab 色空間の円筒座標表現です。
3 つの座標は、L (範囲 [0...1] の明度) 、C (彩度 >= 0) 、H ([0...360] の範囲の度数による色相) です。
OKLab/OKLCH は、知覚的に均一でありながら、計算コストを低く抑えられるよう設計されています。
この変換は colorSRGBToOKLCH の逆変換です。
OKLCH から OKLab へ。
2) OKLab から Linear sRGB へ
3) Linear sRGB から sRGB へ
2 番目の引数 gamma は最後の段階で使用されます。
OKLCH 空間における色の例と、それらが sRGB の色にどのように対応するかについては、https://oklch.com/ を参照してください。
構文
colorOKLCHToSRGB(tuple [, gamma])
引数
tuple — 3 つの数値 L、C、H から成るタプル。L は範囲 [0...1]、C >= 0、H は範囲 [0...360] です。Tuple(Float64, Float64, Float64)
gamma — 任意。各チャネル x に (x ^ (1 / gamma)) * 255 を適用して、線形 sRGB を sRGB に変換する際に使用する指数です。デフォルトは 2.2 です。Float64
戻り値
sRGB の色値を表すタプル (R, G, B) を返します。Tuple(Float64, Float64, Float64)
例
OKLCH を sRGB に変換する
SELECT colorOKLCHToSRGB(( 0 . 6 , 0 . 12 , 40 )) AS rgb;
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘
OKLCH を sRGB (UInt8) に変換
WITH colorOKLCHToSRGB(( 0 . 6 , 0 . 12 , 40 )) AS t
SELECT tuple(toUInt8( t . 1 ), toUInt8( t . 2 ), toUInt8( t . 3 )) AS RGB;
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘
導入バージョン: v26.2.0
sRGB 色空間でエンコードされた色を、知覚的に均一な OKLAB 色空間に変換します。
いずれかの入力チャネルが [0...255] の範囲外にある場合、またはガンマ値が 0 以下の場合の動作は実装依存です。
OKLAB は知覚的に均一な色空間です。
その 3 つの座標は、L ([0...1] の範囲の明度) 、a(緑-赤軸)、b(青-黄軸) です。
OKLab は、計算コストを抑えつつ知覚的に均一になるよう設計されています。
変換は次の 2 段階で行われます。
sRGB から Linear sRGB
2) Linear sRGB から OKLab
構文
colorSRGBToOKLAB(tuple[, gamma])
引数
戻り値
OKLAB 色空間の値を表すタプル (L, a, b) を返します。Tuple(Float64, Float64, Float64)
例
sRGB を OKLAB に変換する
SELECT colorSRGBToOKLAB(( 128 , 64 , 32 ), 2 . 2 ) AS lab;
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘
導入バージョン: v25.7.0
sRGB 色空間でエンコードされた色を、知覚的に一様な OKLCH 色空間に変換します。
いずれかの入力チャネルが [0...255] の範囲外であるか、ガンマ値が 0 以下の場合の動作は実装依存です。
OKLCH は、OKLab 色空間の円筒座標表現です。
その 3 つの座標は、L ([0...1] の範囲の明度) 、C (>= 0 の彩度) 、H ([0...360] の範囲の度数で表した色相) です。
OKLab/OKLCH は、計算コストを抑えつつ知覚的に一様になるよう設計されています。
変換は次の 3 段階で行われます。
sRGB から Linear sRGB
2) Linear sRGB から OKLab
3) OKLab から OKLCH。
OKLCH 空間における色の参考例と、それらが sRGB の色にどう対応するかについては、https://OKLCH.com/ を参照してください。
構文
colorSRGBToOKLCH(tuple[, gamma])
引数
戻り値
OKLCH 色空間の値を表すタプル (L, C, H) を返します。Tuple(Float64, Float64, Float64)
例
sRGB を OKLCH に変換
SELECT colorSRGBToOKLCH(( 128 , 64 , 32 ), 2 . 2 ) AS lch;
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘
導入バージョン: v21.3.0
現在のクエリを送信したクライアントの接続 ID を返します。
この関数は、デバッグ時に特に有用です。
これは、MySQL の CONNECTION_ID 関数との互換性を保つために作成されました。
通常、本番環境のクエリでは使用されません。
構文
引数
戻り値
現在のクライアントの接続 ID を返します。UInt64
例
使用例
┌─connectionId()─┐
│ 0 │
└────────────────┘
導入バージョン: v20.8.0
値の表現に必要な10進数の桁数を返します。
この関数は10進数値の scale を考慮します。つまり、基になる整数型 (value * scale) に対して結果を計算します。 例:
countDigits(42) = 2
countDigits(42.000) = 5
countDigits(0.04200) = 4
構文
引数
戻り値
x の表現に必要な桁数を返します。UInt8
例
使用例
SELECT countDigits(toDecimal32( 1 , 9 )), countDigits(toDecimal32( - 1 , 9 )),
countDigits(toDecimal64( 1 , 18 )), countDigits(toDecimal64( - 1 , 18 )),
countDigits(toDecimal128( 1 , 38 )), countDigits(toDecimal128( - 1 , 38 ));
┌─countDigits(toDecimal32(1, 9))─┬─countDigits(toDecimal32(-1, 9))─┬─countDigits(toDecimal64(1, 18))─┬─countDigits(toDecimal64(-1, 18))─┬─countDigits(toDecimal128(1, 38))─┬─countDigits(toDecimal128(-1, 38))─┐
│ 10 │ 10 │ 19 │ 19 │ 39 │ 39 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘
導入バージョン: v1.1.0
現在のデータベース名を返します。
データベースを指定する必要がある CREATE TABLE クエリのテーブルエンジンパラメータで便利です。
SETステートメント も参照してください。
構文
別名 : current_database, SCHEMA, DATABASE
引数
戻り値
現在のデータベース名を返します。 String
例
使用例
┌─currentDatabase()─┐
│ default │
└───────────────────┘
SQL 標準構文
┌─CURRENT_DATABASE─┐
│ default │
└──────────────────┘
導入バージョン: v21.9.0
現在のユーザーに設定されている設定プロファイルの配列を返します。
構文
引数
戻り値
現在のユーザーの設定プロファイルの配列を返します。Array(String)
例
使用例
SELECT currentProfiles();
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘
導入バージョン: v25.2.0
現在の Query id を返します。
構文
別名 : current_query_id
引数
戻り値
例
例
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘
導入バージョン: v21.9.0
現在のユーザーに付与されているロールの配列を返します。
構文
引数
戻り値
現在のユーザーに割り当てられているロールの配列を返します。Array(String)
例
使用例
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
導入バージョン: v23.7.0
関数 currentDatabase と同じですが、次の点が異なります。
無視される真偽値の引数を受け取ります
データベース名を、単一の値を含む配列として返します。
関数 currentSchemas は、PostgreSQL との互換性のためにのみ存在します。
代わりに currentDatabase を使用してください。
SET ステートメント も参照してください。
構文
別名 : current_schemas
引数
戻り値
現在のデータベース名を含む単一要素の配列を返します。Array(String)
例
使用例
SELECT currentSchemas(true)
┌─currentSchemas(true)─┐
│ ['default'] │
└──────────────────────┘
導入バージョン: v20.1.0
現在のユーザー名を返します。
分散クエリの場合は、クエリを開始したユーザー名が返されます。
構文
別名 : current_user, user
引数
戻り値
現在のユーザー名、またはクエリを開始したユーザーのログイン名を返します。String
例
使用例
┌─currentUser()─┐
│ default │
└───────────────┘
SQL 標準構文
┌─CURRENT_USER─┐
│ default │
└──────────────┘
導入バージョン: v21.9.0
現在のユーザーに対するデフォルトの設定プロファイル名の配列を返します。
構文
引数
戻り値
現在のユーザーのデフォルトの設定プロファイル名の配列を返します。Array(String)
例
使用例
SELECT defaultProfiles();
┌─defaultProfiles()─┐
│ ['default'] │
└───────────────────┘
導入バージョン: v21.9.0
現在のユーザーに設定されているデフォルトロールの配列を返します。
構文
引数
戻り値
現在のユーザーのデフォルトロールの配列を返します。 Array(String)
例
使用例
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
defaultValueOfArgumentType
導入バージョン: v1.1.0
指定されたデータ型のデフォルト値を返します。
ユーザーが設定したカスタムカラムのデフォルト値は含まれません。
構文
defaultValueOfArgumentType(expression)
引数
expression — 任意の型の値、または任意の型の値になる式。Any
戻り値
数値型の場合は 0、文字列型の場合は空文字列、Nullable 型の場合は NULL を返します。UInt8 または String または NULL
例
使用例
SELECT defaultValueOfArgumentType( CAST ( 1 AS Int8));
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│ 0 │
└─────────────────────────────────────────────┘
Nullable の例
SELECT defaultValueOfArgumentType( CAST ( 1 AS Nullable(Int8)));
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│ ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘
導入バージョン: v1.1.0
指定された型名のデフォルト値を返します。
構文
defaultValueOfTypeName( type )
引数
戻り値
指定した型名のデフォルト値を返します。数値型の場合は 0、文字列型の場合は空文字列、Nullable UInt8 または String 、あるいは NULL の場合は NULL です。
例
使用例
SELECT defaultValueOfTypeName( 'Int8' );
┌─defaultValueOfTypeName('Int8')─┐
│ 0 │
└────────────────────────────────┘
Nullableの例
SELECT defaultValueOfTypeName( 'Nullable(Int8)' );
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│ ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘
導入バージョン: v22.11.0
config の display_name の値を返します。設定されていない場合は、サーバーの完全修飾ドメイン名 (FQDN) を返します。
構文
引数
戻り値
config の display_name の値を返します。設定されていない場合は、サーバーの FQDN を返します。String
例
使用例
┌─displayName()─┐
│ production │
└───────────────┘
導入バージョン: v1.1.0
カラムの内部構造とそのデータ型について、詳細な説明を出力します。
構文
引数
戻り値
値の表現に使用されるカラム構造の説明を返します。String
例
使用例
SELECT dumpColumnStructure( CAST ( '2018-01-01 01:02:03' , 'DateTime' ));
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1)) │
└──────────────────────────────────────────────────────────────┘
導入バージョン: v21.9.0
現在のユーザーで有効な設定プロファイル名の配列を返します。
構文
引数
戻り値
現在のユーザーで有効になっている設定プロファイル名の配列を返します。 Array(String)
例
使用例
SELECT enabledProfiles();
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘
導入バージョン: v21.9.0
現在のユーザーで有効になっているロールの配列を返します。
構文
引数
戻り値
現在のユーザーで有効なロール名の配列を返します。Array(String)
例
使用例
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘
導入バージョン: v20.12.0
数値の ClickHouse エラーコードに対応するエラー名のテキストを返します。
数値のエラーコードとエラー名の対応はこちら で確認できます。
構文
errorCodeToName(error_code)
引数
戻り値
error_code のテキスト形式の名前を返します。String
例
使用例
SELECT errorCodeToName( 252 );
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS │
└──────────────────────┘
導入バージョン: v21.3.0
ファイルを文字列として読み取り、その内容を指定したカラムに読み込みます。
ファイルの内容は解釈されません。
file テーブル関数も参照してください。
構文
引数
path — user_files_path からの相対パス。ワイルドカード *、**、?、{abc,def}、{N..M} をサポートします。ここで、N と M は数値、'abc' と 'def' は文字列です。String
default — ファイルが存在しない場合、またはアクセスできない場合に返される値。String または NULL
戻り値
ファイルの内容を文字列として返します。String
例
ファイルをテーブルに挿入
INSERT INTO table SELECT file ( 'a.txt' ), file ( 'b.txt' );
導入バージョン: v20.1.0
データベースの永続化先があるファイルシステムの空き容量を返します。
オペレーティングシステム用に一部の領域が予約されているため、戻り値は常に合計の空き容量 (filesystemUnreserved ) よりも小さくなります。
構文
filesystemAvailable([disk_name])
引数
戻り値
利用可能な残りの空き容量をバイト単位で返します。 UInt64
例
使用例
SELECT formatReadableSize(filesystemAvailable()) AS "Available space" ;
┌─Available space─┐
│ 30.75 GiB │
└─────────────────┘
導入バージョン: v20.1.0
ファイルシステムの容量をバイト単位で返します。
データディレクトリへの path を設定しておく必要があります。
構文
filesystemCapacity([disk_name])
引数
戻り値
ファイルシステムの容量をバイト単位で返します。UInt64
例
使用例
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity" ;
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘
導入バージョン: v22.12.0
データベースの永続化ストレージをホストするファイルシステム上の空き領域の総量を返します (以前の名前は filesystemFree) 。
関連項目: filesystemAvailable 。
構文
filesystemUnreserved([disk_name])
引数
disk_name — 省略可能。空き容量の合計を取得する対象のディスク名です。省略した場合は、デフォルトのディスクが使用されます。String または FixedString
戻り値
空き容量をバイト単位で返します。UInt64
例
使用例
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space" ;
┌─Free space─┐
│ 32.39 GiB │
└────────────┘
導入バージョン: v1.1.0
集約状態を受け取り、この関数は集約結果を返します (-State コンビネータを使用している場合は、確定された状態を返します) 。
構文
finalizeAggregation( state )
引数
戻り値
集約を確定した結果を返します。Any
例
使用例
SELECT finalizeAggregation(arrayReduce( 'maxState' , [1, 2, 3]));
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│ 3 │
└─────────────────────────────────────────────────────────┘
initializeAggregation と併用
WITH initializeAggregation( 'sumState' , number ) AS one_row_sum_state
SELECT
number ,
finalizeAggregation(one_row_sum_state) AS one_row_sum,
runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers( 5 );
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│ 0 │ 0 │ 0 │
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 3 │
│ 3 │ 3 │ 6 │
│ 4 │ 4 │ 10 │
└────────┴─────────────┴────────────────┘
導入バージョン: v25.11.0
ジオメトリオブジェクトの x 座標と y 座標を入れ替えます。この操作では緯度と経度が入れ替わるため、異なる座標系間の変換や座標順序の修正に役立ちます。
Point では x 座標と y 座標を入れ替えます。複雑なジオメトリ (LineString、Polygon、MultiPolygon、Ring、MultiLineString) では、各座標ペアにこの変換が再帰的に適用されます。
この関数は、個別のジオメトリ型 (Point、Ring、Polygon、MultiPolygon、LineString、MultiLineString) と Geometry Variant 型の両方をサポートします。
構文
flipCoordinates( geometry )
引数
geometry — 変換対象のジオメトリ。対応する型: Point (Tuple(Float64, Float64)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)), または Geometry (これらのいずれかの型を含むバリアント) 。
戻り値
座標が反転されたジオメトリ。戻り値の型は入力型と一致します。Point または Ring または Polygon または MultiPolygon または LineString または MultiLineString または Geometry
例
basic_point
SELECT flipCoordinates(( 1 . 0 , 2 . 0 ));
リング
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
polygon
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]
geometry_wkt
SELECT flipCoordinates(readWkt( 'POINT(10 20)' ));
geometry_polygon_wkt
SELECT flipCoordinates(readWkt( 'POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))' ));
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]
導入バージョン: v23.10.0
指定された SQL クエリを整形して返します。出力は複数行になる場合があります。パースエラーが発生した場合は例外をスローします。
[example:multiline]
構文
引数
query — フォーマットする SQL クエリ。 String
戻り値
フォーマットされたクエリ String
例
複数行
SELECT formatQuery( 'select a, b FRom tab WHERE a > 3 and b < 3' );
SELECT
a,
b
FROM tab
WHERE (a > 3) AND (b < 3)
導入バージョン: v23.11.0
指定されたSQLクエリを整形したものを返します。結果は複数行になる場合があります。パースエラーの場合はNULLを返します。
[example:multiline]
構文
引数
戻り値
フォーマットされたクエリ String
例
複数行
SELECT formatQuery( 'select a, b FRom tab WHERE a > 3 and b < 3' );
SELECT
a,
b
FROM tab
WHERE (a > 3) AND (b < 3)
導入バージョン: v23.10.0
formatQuery() と同様ですが、返される整形済み文字列には改行が含まれません。パースエラーが発生した場合は例外をスローします。
[example:multiline]
構文
formatQuerySingleLine(query)
引数
query — フォーマット対象のSQLクエリ。String
戻り値
フォーマット後のクエリ String
例
複数行
SELECT formatQuerySingleLine( 'select a, b FRom tab WHERE a > 3 and b < 3' );
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
導入バージョン: v23.11.0
formatQuery() と同様ですが、返されるフォーマット済み文字列には改行が含まれません。パース エラーが発生した場合は NULL を返します。
[example:multiline]
構文
formatQuerySingleLineOrNull(query)
引数
query — フォーマット対象のSQLクエリ。String
戻り値
フォーマット済みのクエリ String
例
複数行
SELECT formatQuerySingleLine( 'select a, b FRom tab WHERE a > 3 and b < 3' );
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
導入バージョン: v22.11.0
サイズ (バイト数) を受け取り、接尾辞 (KB、MB など) 付きの、読みやすく丸められたサイズを文字列として返します。
この関数の逆の操作は parseReadableSize です。
構文
formatReadableDecimalSize(x)
引数
戻り値
接尾辞付きの、読みやすく丸められたサイズを文字列で返します。String
例
ファイルサイズを見やすい形式で表示する
SELECT
arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
formatReadableDecimalSize(filesize_bytes) AS filesize
┌─filesize_bytes─┬─filesize───┐
│ 1 │ 1.00 B │
│ 1024 │ 1.02 KB │
│ 1048576 │ 1.05 MB │
│ 192851925 │ 192.85 MB │
└────────────────┴────────────┘
導入バージョン: v20.10.0
数値を指定すると、この関数は接尾辞 (thousand、million、billion など) を付けた丸め後の数値を文字列として返します。
この関数は入力として任意の数値型を受け付けますが、内部的にはそれらを Float64 にキャストします。
値が大きい場合、結果が不正確になることがあります。
構文
formatReadableQuantity(x)
引数
戻り値
接尾辞付きに丸めた数値を文字列として返します。String
例
数値を接尾辞付きでフォーマットする
SELECT
arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number ,
formatReadableQuantity( number ) AS number_for_humans
┌─────────number─┬─number_for_humans─┐
│ 1024 │ 1.02 thousand │
│ 1234000 │ 1.23 million │
│ 4567000000 │ 4.57 billion │
│ 98765432101234 │ 98.77 trillion │
└────────────────┴───────────────────┘
導入バージョン: v1.1.0
サイズ (バイト数) を指定すると、この関数は接尾辞 (KiB、MiB など) 付きの、読みやすく丸められたサイズを文字列で返します。
この関数の逆の処理を行うのは parseReadableSize 、parseReadableSizeOrZero 、および parseReadableSizeOrNull です。
この関数は入力として任意の数値型を受け付けますが、内部ではそれらを Float64 にキャストします。値が大きい場合、結果が最適にならないことがあります。
構文
別名 : FORMAT_BYTES
引数
戻り値
接尾辞付きで、読みやすいように丸められたサイズを文字列で返します。String
例
ファイルサイズのフォーマット
SELECT
arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
formatReadableSize(filesize_bytes) AS filesize
┌─filesize_bytes─┬─filesize───┐
│ 1 │ 1.00 B │
│ 1024 │ 1.00 KiB │
│ 1048576 │ 1.00 MiB │
│ 192851925 │ 183.92 MiB │
└────────────────┴────────────┘
導入バージョン: v20.12.0
秒単位の時間間隔 (delta) が与えられると、この関数は年/月/日/時/分/秒/ミリ秒/マイクロ秒/ナノ秒を含む時間差を文字列で返します。
この関数は任意の数値型を入力として受け付けますが、内部的にはそれらを Float64 にキャストします。値が大きい場合、結果が最適でないことがあります。
構文
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])
引数
column — 数値の時間差を表すカラム。Float64
maximum_unit — 任意。表示する最大の単位。有効な値: nanoseconds、microseconds、milliseconds、seconds、minutes、hours、days、months、years。デフォルト値: years。const String
minimum_unit — 任意。表示する最小の単位。これより小さい単位はすべて切り捨てられます。有効な値: nanoseconds、microseconds、milliseconds、seconds、minutes、hours、days、months、years。明示的に指定した値が maximum_unit より大きい場合は、例外がスローされます。デフォルト値: maximum_unit が seconds 以上の場合は seconds、それ以外の場合は nanoseconds。const String
戻り値
時間差を文字列として返します。String
例
使用例
SELECT
arrayJoin([100, 12345, 432546534]) AS elapsed,
formatReadableTimeDelta(elapsed) AS time_delta
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│ 100 │ 1 minute and 40 seconds │
│ 12345 │ 3 hours, 25 minutes and 45 seconds │
│ 432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds│
└────────────┴────────────────────────────────────────────────────────────────┘
最大単位付き
SELECT
arrayJoin([100, 12345, 432546534]) AS elapsed,
formatReadableTimeDelta(elapsed, 'minutes' ) AS time_delta
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│ 100 │ 1 minute and 40 seconds │
│ 12345 │ 205 minutes and 45 seconds │
│ 432546534 │ 7209108 minutes and 54 seconds │
└────────────┴─────────────────────────────────────────────────────────────────┘
導入バージョン: v26.2.0
指定されたクエリ文字列を解析し、ランダムな AST ミューテーション (ファジング) を適用します。ファジングされたクエリを文字列として返します。非決定論的で、呼び出すたびに異なる結果になる場合があります。allow_fuzz_query_functions = 1 が必要です。
構文
引数
戻り値
ファズ処理されたクエリ文字列 String
例
基本的な例
SET allow_fuzz_query_functions = 1 ; SELECT fuzzQuery( 'SELECT 1' );
導入バージョン: v23.5.0
column1_name column1_type, column2_name column2_type, ... の形式でランダムなテーブルの構造を生成します。
構文
generateRandomStructure([number_of_columns, seed])
引数
number_of_columns — 生成されるテーブル構造のカラム数。0 または Null に設定すると、カラム数は 1〜128 の範囲でランダムに決まります。デフォルト値: Null。 UInt64
seed — 再現可能な結果を得るための乱数シード。seed が指定されていないか Null に設定されている場合は、ランダムに生成されます。 UInt64
戻り値
ランダムに生成されたテーブル構造。 String
例
使用例
SELECT generateRandomStructure()
c1 Decimal32(5), c2 Date, c3 Tuple(LowCardinality(String), Int128, UInt64, UInt16, UInt8, IPv6), c4 Array(UInt128), c5 UInt32, c6 IPv4, c7 Decimal256(64), c8 Decimal128(3), c9 UInt256, c10 UInt64, c11 DateTime
指定したカラム数の
SELECT generateRandomStructure( 1 )
指定したシードで
SELECT generateRandomStructure( NULL , 33 )
c1 DateTime, c2 Enum8('c2V0' = 0, 'c2V1' = 1, 'c2V2' = 2, 'c2V3' = 3), c3 LowCardinality(Nullable(FixedString(30))), c4 Int16, c5 Enum8('c5V0' = 0, 'c5V1' = 1, 'c5V2' = 2, 'c5V3' = 3), c6 Nullable(UInt8), c7 String, c8 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(70)))
導入バージョン: v25.1.0
前回のカウンター値に続く連番を生成して返します。
この関数は、文字列の引数 (シリーズ識別子) と、省略可能な開始値を受け取ります。
サーバーは Keeper を使用するように設定する必要があります。
シリーズはパス配下の Keeper ノードに保存され、このパスはサーバー設定の series_keeper_path で設定できます。
構文
generateSerialID(series_identifier[, start_value])
引数
series_identifier — シリーズ識別子 const String
start_value — 任意。カウンターの開始値です。デフォルトは 0 です。注意: この値が使用されるのは新しいシリーズを作成する場合のみで、シリーズがすでに存在する場合は無視されます UInt*
戻り値
直前のカウンター値に続く連番を返します。 UInt64
例
最初の呼び出し
SELECT generateSerialID( 'id1' )
┌─generateSerialID('id1')──┐
│ 1 │
└──────────────────────────┘
2回目の呼び出し
SELECT generateSerialID( 'id1' )
┌─generateSerialID('id1')──┐
│ 2 │
└──────────────────────────┘
カラムの呼び出し
SELECT * , generateSerialID( 'id1' ) FROM test_table
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')──┐
│ 1 │ 3 │ 3 │ 3 │
│ 1 │ 1 │ 1 │ 4 │
│ 1 │ 2 │ 2 │ 5 │
│ 1 │ 5 │ 5 │ 6 │
│ 1 │ 4 │ 4 │ 7 │
└───────────┴────────┴─────┴──────────────────────────┘
開始値あり
SELECT generateSerialID( 'id2' , 100 )
┌─generateSerialID('id2', 100)──┐
│ 100 │
└───────────────────────────────┘
開始値を指定した2回目の呼び出し
SELECT generateSerialID( 'id2' , 100 )
┌─generateSerialID('id2', 100)──┐
│ 101 │
└───────────────────────────────┘
導入バージョン: v24.5.0
HTTPヘッダーの値を取得します。
該当するヘッダーが存在しない場合、または現在のリクエストが HTTPインターフェイス 経由で実行されていない場合、この関数は空文字列を返します。
一部の HTTPヘッダー (例: Authentication および X-ClickHouse-*) は制限されています。
Setting allow_get_client_http_header が必要です この関数を使用するには、setting allow_get_client_http_header を有効にする必要があります。
Cookie などの一部のヘッダーに機微な情報が含まれる可能性があるため、セキュリティ上の理由から、この setting はデフォルトでは有効になっていません。
この関数では、HTTPヘッダーは大文字と小文字が区別されます。
分散クエリのコンテキストでこの関数を使用した場合、空でない結果が返されるのはイニシエーター ノード上のみです。
構文
getClientHTTPHeader( name )
引数
戻り値
ヘッダーの値を返します。String
例
使用例
SELECT getClientHTTPHeader( 'Content-Type' );
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded │
└─────────────────────────────────────┘
導入バージョン: v20.1.0
サーバー設定ファイルからマクロの値を返します。
マクロは設定ファイルの<macros> セクションで定義され、ホスト名が複雑な場合でも、わかりやすい名前でサーバーを識別するために使用できます。
この関数を分散テーブル上で実行すると、各分片に対応する値を持つ通常のカラムが生成されます。
構文
引数
戻り値
指定したマクロの値を返します。String
例
基本的な使い方
┌─getMacro('test')─┐
│ Value │
└──────────────────┘
getMaxTableNameLengthForDatabase
導入バージョン: v25.1.0
指定したデータベース内のテーブル名の最大長を返します。
構文
getMaxTableNameLengthForDatabase( database_name )
引数
database_name — 指定したデータベースの名前。String
戻り値
最大のテーブル名の長さを表す整数値を返します
例
一般的な例
SELECT getMaxTableNameLengthForDatabase( 'default' );
┌─getMaxTableNameLengthForDatabase('default')─┐
│ 206 │
└─────────────────────────────────────────────┘
導入バージョン: v25.6.0
MergeTree設定の現在の値を返します。
構文
getMergeTreeSetting(setting_name)
引数
戻り値
MergeTree 設定の現在の値を返します。
例
使用例
SELECT getMergeTreeSetting( 'index_granularity' );
┌─getMergeTreeSetting('index_granularity')─┐
│ 8192 │
└──────────────────────────────────────────┘
導入バージョン: v21.11.0
OS カーネルのバージョンを含む文字列を返します。
構文
引数
戻り値
現在の OS カーネルのバージョンを返します。 String
例
使用例
SELECT getOSKernelVersion();
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘
導入バージョン: v21.10.0
指定したプロトコルのサーバーのポート番号を返します。
構文
引数
戻り値
サーバーのポート番号を返します。UInt16
例
使用例
SELECT getServerPort( 'tcp_port' );
┌─getServerPort('tcp_port')─┐
│ 9000 │
└───────────────────────────┘
導入バージョン: v25.6.0
サーバー設定の名前を指定すると、現在設定されている値を返します。
構文
getServerSetting(setting_name ')
引数
setting_name — サーバー設定の名前。String
戻り値
サーバー設定の現在の値を返します。Any
例
使用例
SELECT getServerSetting( 'allow_use_jemalloc_memory' );
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true │
└───────────────────────────────────────────────┘
導入バージョン: v20.7.0
設定の現在の値を返します。
構文
引数
戻り値
設定の現在の値を返します。 Any
例
使用例
SELECT getSetting( 'enable_analyzer' );
SET enable_analyzer = false;
SELECT getSetting( 'enable_analyzer' );
┌─getSetting('⋯_analyzer')─┐
│ true │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false │
└──────────────────────────┘
導入バージョン: v24.10.0
設定の現在の値を返します。現在のプロファイルでその設定が指定されていない場合は、2 番目の引数で指定されたデフォルト値を返します。
構文
getSettingOrDefault(setting_name, default_value)
引数
setting_name — 設定名。String
default_value — custom_setting が設定されていない場合に返される値。値には任意のデータ型または Null を指定できます。
戻り値
指定した設定の現在の値を返します。設定されていない場合は default_value を返します。
例
使用例
SELECT getSettingOrDefault( 'custom_undef1' , 'my_value' );
SELECT getSettingOrDefault( 'custom_undef2' , 100 );
SELECT getSettingOrDefault( 'custom_undef3' , NULL );
導入バージョン: v1.1.0
指定されたEnum に含まれるフィールドの数を返します。
構文
引数
戻り値
Enum 型の入力値を持つフィールドの数を返します。UInt8/16
例
使用例
SELECT getSizeOfEnumType( CAST ( 'a' AS Enum8( 'a' = 1 , 'b' = 2 ))) AS x;
導入バージョン: v23.3.0
式または識別子と、サブカラム名を表す定数文字列を受け取ります。
式から抽出した指定のサブカラムを返します。
構文
getSubcolumn(nested_value, subcolumn_name)
引数
戻り値
例
getSubcolumn
SELECT getSubcolumn(array_col, 'size0' ), getSubcolumn(tuple_col, 'elem_name' )
getTypeSerializationStreams
導入バージョン: v22.6.0
データ型のストリームパスを列挙します。
この関数は開発目的での使用を想定しています。
構文
getTypeSerializationStreams(col)
引数
col — データ型を検出する対象の、カラム、またはデータ型の文字列表現。Any
戻り値
すべてのシリアライゼーションのサブストリームパスを含む配列を返します。Array(String)
例
tuple
SELECT getTypeSerializationStreams(tuple( 'a' , 1 , 'b' , 2 ))
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']
map
SELECT getTypeSerializationStreams( 'Map(String, Int64)' )
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']
導入バージョン: v20.5.0
定数の文字列引数を受け取り、その名前を持つグローバル変数の値を返します。この関数は MySQL との互換性のためのもので、ClickHouse の通常の運用では必要でも有用でもありません。定義されているダミーのグローバル変数はごくわずかです。
構文
引数
戻り値
変数 name の値を返します。Any
例
globalVariable
SELECT globalVariable( 'max_allowed_packet' )
導入バージョン: v1.1.0
データベース内のテーブルに特定のカラムが存在するかどうかを確認します。
ネストされたデータ構造内の要素については、この関数はカラムの存在を確認します。
ネストされたデータ構造そのものに対しては、この関数は 0 を返します。
構文
hasColumnInTable([hostname[, username[, password]],] database , table , column)
引数
戻り値
指定したカラムが存在する場合は 1、存在しない場合は 0 を返します。UInt8
例
既存のカラムを確認する
SELECT hasColumnInTable( 'system' , 'metrics' , 'metric' )
存在しないカラムをチェックする
SELECT hasColumnInTable( 'system' , 'metrics' , 'non-existing_column' )
導入バージョン: v20.6.0
thread fuzzer が有効になっているかどうかを返します。
この関数は、テストとデバッグにのみ有用です。
構文
引数
戻り値
Thread Fuzzer が有効になっているかどうかを返します。UInt8
例
Thread Fuzzer の状態を確認する
┌─hasThreadFuzzer()─┐
│ 0 │
└───────────────────┘
導入バージョン: v26.5.0
ClickHouse SQLのクエリ文字列を解析し、構文ハイライト用の範囲の配列を返します。
各範囲は、開始位置 (バイト単位) 、終了位置、ハイライトの種類を含む名前付きタプルです。
ハイライトの種類は、その部分の構文上の役割 (キーワード、識別子、関数など) を表し、
UIで色を割り当てるために使用できます。LIKE および REGEXP の文字列パターン内では、メタ文字
とエスケープ文字は個別にハイライトされます。
構文
引数
query — ClickHouse SQLのクエリ文字列。String。
戻り値
ハイライトされた範囲を表す、名前付きタプル (begin UInt64, end UInt64, type Enum8(...)) の配列。Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))
例
シンプル
SELECT highlightQuery( 'SELECT 1' )
[(0,6,'keyword'),(7,8,'number')]
導入バージョン: v20.5.0
この関数が実行されたホスト名を返します。
関数がリモートサーバー上で実行される場合 (分散処理) 、そのリモートサーバー名が返されます。
関数が分散テーブルのコンテキストで実行される場合は、各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を返します。
構文
別名 : hostname
引数
戻り値
ホスト名を返します。String
例
使用例
┌─hostName()─┐
│ clickhouse │
└────────────┘
導入バージョン: v25.5.0
iceberg bucket transform のロジックを実装しています。
構文
引数
戻り値
変換元の値の 32 ビットハッシュを返します。Int32
例
例
SELECT icebergBucket( 5 , 1 . 0 :: Float32)
導入バージョン: v25.3.0
Iceberg の truncate transform のロジックを実装しています: https://iceberg.apache.org/spec/#truncate-transform-details .
構文
icebergTruncate(N, value )
引数
戻り値
引数と同じ型
例
例
SELECT icebergTruncate( 3 , 'iceberg' )
導入バージョン: v1.1.0
この関数は、渡された引数をそのまま返します。デバッグやテストに便利です。これを使うと、索引の使用を回避して、代わりにフルスキャンのパフォーマンスを確認できます。クエリアナライザは、使用する索引を探す際に identity 関数内の内容をすべて無視し、定数畳み込みも無効にします。
構文
引数
戻り値
入力値をそのまま返します。Any
例
使用例
導入バージョン: v1.1.0
任意の引数を受け取り、常に 0 を返します。
構文
引数
x — 構文エラーを回避するためだけに渡され、実際には使用されない入力値です。Any
戻り値
常に 0 を返します。UInt8
例
使用例
SELECT ignore ( 0 , 'ClickHouse' , NULL )
┌─ignore(0, 'ClickHouse', NULL)─┐
│ 0 │
└───────────────────────────────┘
導入バージョン: v1.1.0
この関数は、デバッグと内部診断を目的としています。
引数は無視され、常に 1 を返します。
引数は評価されません。
索引解析では、この関数の引数は indexHint でラップされていないものとして扱われます。
これにより、対応する条件に基づいて索引範囲内のデータを選択できますが、その条件による追加の絞り込みは行われません。
ClickHouse の索引はスパースであるため、indexHint を使用すると、同じ条件を直接指定した場合よりも多くのデータが返されます。
次を実行すると: SELECT * FROM test WHERE key = 123 ;
ClickHouse は次の 2 つを行います:
索引を使って、key = 123 を含む可能性のあるグラニュール (約 8192 行のブロック) を見つける
それらのグラニュールを読み取り、key = 123 の行だけを返すように行ごとにフィルタする
そのため、ディスクから 8,192 行を読み取っても、実際に一致する 1 行だけが返されます。 一方、indexHint を使って次を実行すると: SELECT * FROM test WHERE indexHint( key = 123 );
ClickHouse が行うのは 1 つだけです:
索引を使って key = 123 を含む可能性のあるグラニュールを見つけ、それらのグラニュールから フィルタせずに すべての行を返す
key = 456 や key = 789 などの行も含め、8,192 行すべてが返されます。 (同じグラニュールにたまたま格納されていたものがすべて返されます。)
indexHint() はパフォーマンスのためのものではありません。これは、ClickHouse の索引がどのように機能するかをデバッグし、理解するためのものです:
自分の条件はどのグラニュールを選択しているか
それらのグラニュールには何行あるか
自分の索引は効果的に使われているか
注: indexHint 関数を使ってクエリを最適化することはできません。indexHint 関数はクエリ解析に追加情報を与えないため、クエリを最適化しません。indexHint 関数の中に式を入れても、indexHint 関数を使わない場合と比べて何ら有利ではありません。indexHint 関数は内部診断とデバッグの目的でのみ使用でき、パフォーマンスを改善するものではありません。ClickHouse のコントリビューター以外が indexHint を使っているのを見かけた場合、それはおそらく誤りなので削除すべきです。
構文
引数
expression — 索引範囲の選択に使用する任意の式。式
戻り値
常に 1 を返します。UInt8
例
日付でフィルタリングする使用例
SELECT FlightDate AS k, count () FROM ontime WHERE indexHint(k = '2025-09-15' ) GROUP BY k ORDER BY k ASC ;
┌──────────k─┬─count()─┐
│ 2025-09-14 │ 7071 │
│ 2025-09-15 │ 16428 │
│ 2025-09-16 │ 1077 │
│ 2025-09-30 │ 8167 │
└────────────┴─────────┘
導入バージョン: v1.1.0
現在の初期クエリの ID を返します。
クエリのその他のパラメータは、system.query_log の initial_query_id フィールドから取得できます。
queryID 関数とは異なり、initialQueryID は異なる分片でも同じ結果を返します。
構文
別名 : initial_query_id
引数
戻り値
現在のクエリの元となる初期クエリの ID を返します。String
例
使用例
CREATE TABLE tmp (str String) ENGINE = Log ;
INSERT INTO tmp ( * ) VALUES ( 'a' );
SELECT count ( DISTINCT t) FROM ( SELECT initialQueryID() AS t FROM remote ( '127.0.0.{1..3}' , currentDatabase(), 'tmp' ) GROUP BY queryID());
┌─count(DISTINCT t)─┐
│ 1 │
└───────────────────┘
導入バージョン: v25.4.0
初期クエリの開始時刻を返します。
initialQueryStartTime は、異なる分片でも同じ結果を返します。
構文
別名 : initial_query_start_time
引数
戻り値
現在の初期クエリの開始時刻を返します。DateTime
例
使用例
CREATE TABLE tmp (str String) ENGINE = Log ;
INSERT INTO tmp ( * ) VALUES ( 'a' );
SELECT count ( DISTINCT t) FROM ( SELECT initialQueryStartTime() AS t FROM remote ( '127.0.0.{1..3}' , currentDatabase(), 'tmp' ) GROUP BY queryID());
┌─count(DISTINCT t)─┐
│ 1 │
└───────────────────┘
導入バージョン: v20.6.0
単一の値に基づいて、集約関数の結果を計算します。
この関数は、-State コンビネータを持つ集約関数を初期化するために使用できます。
集約関数の状態を作成して、それを AggregateFunction 型のカラムに挿入したり、初期化された集約をデフォルト値として使用したりできます。
Syntax
initializeAggregation(aggregate_function, arg1[, arg2, ...])
引数
aggregate_function — 初期化する集約関数の名前。 String
arg1[, arg2, ...] — 集約関数の引数。 Any
戻り値
関数に渡された各行について、集約結果を返します。戻り値の型は、initializeAggregation の第1引数として指定する関数の戻り値の型と同じです。 Any
例
uniqState を使った基本的な使い方
SELECT uniqMerge( state ) FROM ( SELECT initializeAggregation( 'uniqState' , number % 3 ) AS state FROM numbers( 10000 ));
┌─uniqMerge(state)─┐
│ 3 │
└──────────────────┘
sumState と finalizeAggregation の使用
SELECT finalizeAggregation( state ), toTypeName( state ) FROM ( SELECT initializeAggregation( 'sumState' , number % 3 ) AS state FROM numbers( 5 ));
┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│ 0 │ AggregateFunction(sum, UInt8) │
│ 1 │ AggregateFunction(sum, UInt8) │
│ 2 │ AggregateFunction(sum, UInt8) │
│ 0 │ AggregateFunction(sum, UInt8) │
│ 1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘
導入バージョン: v20.3.0
引数が定数式であるかどうかを返します。
定数式とは、その結果がクエリ分析中、つまり実行前に確定している式です。
たとえば、リテラル からなる式は定数式です。
この関数は主に、開発、デバッグ、デモンストレーションを目的としています。
構文
引数
戻り値
x が定数であれば 1、定数でなければ 0 を返します。UInt8
例
定数式
SELECT isConstant(x + 1 )
FROM ( SELECT 43 AS x)
┌─isConstant(plus(x, 1))─┐
│ 1 │
└────────────────────────┘
関数を伴う定数
WITH 3 . 14 AS pi
SELECT isConstant( cos (pi))
┌─isConstant(cos(pi))─┐
│ 1 │
└─────────────────────┘
非定数式
SELECT isConstant( number )
FROM numbers( 1 )
┌─isConstant(number)─┐
│ 0 │
└────────────────────┘
now() 関数の動作
┌─isConstant(now())─┐
│ 1 │
└───────────────────┘
導入バージョン: v20.8.0
10進数が、指定された精度の Decimal データ型に収まるには桁数が多すぎるかどうかを判定します。
構文
isDecimalOverflow( value [, precision])
引数
value — チェック対象の Decimal 値。Decimal
precision — 任意。Decimal 型の精度です。省略した場合は、最初の引数の元の精度が使用されます。UInt8
戻り値
Decimal 値の桁数がその精度で許容される桁数を超えている場合は 1、指定された精度を満たしている場合は 0 を返します。UInt8
例
使用例
SELECT isDecimalOverflow(toDecimal32( 1000000000 , 0 ), 9 ),
isDecimalOverflow(toDecimal32( 1000000000 , 0 )),
isDecimalOverflow(toDecimal32( - 1000000000 , 0 ), 9 ),
isDecimalOverflow(toDecimal32( - 1000000000 , 0 ));
┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│ 1 │ 1 │ 1 │ 1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘
導入バージョン: v18.16.0
Dictionary と同様に、テーブルからデータを取得できます。
指定した結合キーを使って Join テーブルからデータを取得します。
ENGINE = Join(ANY, LEFT, <join_keys>) ステートメント で作成されたテーブルのみサポートしています。
構文
joinGet(join_storage_table_name, value_column, join_keys)
引数
join_storage_table_name — 検索対象を示す識別子です。この識別子はデフォルトデータベース内で検索されます (設定ファイルのパラメータ default_database を参照) 。デフォルトデータベースを変更するには、USE database_name クエリを使用するか、database_name.table_name のようにデータベース名とテーブル名をドットで指定します。String
value_column — 必要なデータを含むtableのカラム名です。const String
join_keys — 結合キーのリストです。Any
戻り値
キーのリストに対応する値のリストを返します。Any
例
使用例
CREATE TABLE db_test .id_val( `id` UInt32, `val` UInt32) ENGINE = Join (ANY, LEFT, id);
INSERT INTO db_test . id_val VALUES ( 1 , 11 )( 2 , 12 )( 4 , 13 );
SELECT joinGet( db_test . id_val , 'val' , toUInt32( 1 ));
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│ 11 │
└─────────────────────────────────────────────┘
現在のデータベース内のテーブルを使用する場合
USE db_test;
SELECT joinGet(id_val, 'val' , toUInt32( 2 ));
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│ 12 │
└─────────────────────────────────────┘
結合キーとしてArrayを使用する
CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join (ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES ( 1 , 11 , 'a' ) ( 2 , 12 , 'b' ) ( 3 , 13 , 'c' );
SELECT joinGet(some_table, 'name' , 1 , 11 );
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a │
└────────────────────────────────────┘
導入バージョン: v20.4.0
Dictionary と同様の方法で、テーブルからデータを取得できます。
指定した結合キーを使用して Join テーブルからデータを取得します。
joinGet とは異なり、キーが存在しない場合は NULL を返します。
ENGINE = Join(ANY, LEFT, <join_keys>) ステートメント で作成されたテーブルのみサポートします。
構文
joinGetOrNull(join_storage_table_name, value_column, join_keys)
引数
join_storage_table_name — 検索を実行する場所を指定する識別子です。この識別子はデフォルトデータベース内で検索されます (設定ファイルの default_database パラメータを参照) 。デフォルトデータベースを変更するには、USE database_name クエリを使用するか、database_name.table_name のようにドット区切りでデータベース名とテーブル名を指定します。String
value_column — 必要なデータを含むテーブルのカラム名です。const String
join_keys — 結合キーのリストです。Any
戻り値
キーのリストに対応する値のリストを返します。キーが見つからない場合は NULL を返します。Any
例
使用例
CREATE TABLE db_test .id_val( `id` UInt32, `val` UInt32) ENGINE = Join (ANY, LEFT, id);
INSERT INTO db_test . id_val VALUES ( 1 , 11 )( 2 , 12 )( 4 , 13 );
SELECT joinGetOrNull( db_test . id_val , 'val' , toUInt32( 1 )), joinGetOrNull( db_test . id_val , 'val' , toUInt32( 999 ));
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│ 11 │ ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘
導入バージョン: v18.12.0
LowCardinality カラムの辞書内での値の位置を返します。位置は 1 から始まります。LowCardinality ではパーツごとに辞書が作成されるため、この関数はパーツが異なると同じ値に対しても異なる位置を返す場合があります。
構文
lowCardinalityIndices(col)
引数
戻り値
現在のパートの Dictionary 内における値の位置。UInt64
例
使用例
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;
-- 2つのパーツを作成する:
INSERT INTO test VALUES ( 'ab' ), ( 'cd' ), ( 'ab' ), ( 'ab' ), ( 'df' );
INSERT INTO test VALUES ( 'ef' ), ( 'cd' ), ( 'ab' ), ( 'cd' ), ( 'ef' );
SELECT s, lowCardinalityIndices(s) FROM test;
┌─s──┬─lowCardinalityIndices(s)─┐
│ ab │ 1 │
│ cd │ 2 │
│ ab │ 1 │
│ ab │ 1 │
│ df │ 3 │
└────┴──────────────────────────┘
┌─s──┬─lowCardinalityIndices(s)─┐
│ ef │ 1 │
│ cd │ 2 │
│ ab │ 3 │
│ cd │ 2 │
│ ef │ 1 │
└────┴──────────────────────────┘
導入バージョン: v18.12.0
LowCardinality カラムの辞書値を返します。
ブロックが辞書サイズより小さい、または大きい場合、結果は切り詰められるか、デフォルト値で拡張されます。
LowCardinality はパーツごとに辞書を持つため、この関数はパーツによって異なる辞書値を返す場合があります。
構文
引数
戻り値
辞書キーを返します。UInt64
例
lowCardinalityKeys
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;
-- 2つのパーツを作成する:
INSERT INTO test VALUES ( 'ab' ), ( 'cd' ), ( 'ab' ), ( 'ab' ), ( 'df' );
INSERT INTO test VALUES ( 'ef' ), ( 'cd' ), ( 'ab' ), ( 'cd' ), ( 'ef' );
SELECT s, lowCardinalityKeys(s) FROM test;
┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │ │
│ cd │ ef │
│ ab │ cd │
│ cd │ ab │
│ ef │ │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │ │
│ cd │ ab │
│ ab │ cd │
│ ab │ df │
│ df │ │
└────┴───────────────────────┘
導入バージョン: v1.1.0
定数を、単一の値を含むフルカラムに変換します。
フルカラムと定数は、メモリ内では異なる形で表現されます。
関数は通常、通常の引数と定数引数に対して異なるコードを実行しますが、結果は一般に同じになるはずです。
この関数は、この動作をデバッグするために使用できます。
構文
引数
戻り値
定数値を含む通常のカラムを返します。Any
例
使用例
-- 以下の例では、`countMatches` 関数は第2引数に定数を期待しています。
-- `materialize` 関数を使用して定数をフルカラムに変換することでこの動作をデバッグでき、
-- 定数でない引数に対して関数がエラーをスローすることを確認できます。
SELECT countMatches( 'foobarfoo' , 'foo' );
SELECT countMatches( 'foobarfoo' , materialize( 'foo' ));
2
Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String
導入バージョン: v23.10.0
2 つのサンプルにおける連続値メトリクスの平均を比較する A/B テストに必要な最小サンプルサイズを計算します。
この記事 で説明されている式を使用します。
介入群と対照群のサイズが等しいことを前提としています。
1 グループあたりに必要なサンプルサイズを返します (つまり、実験全体で必要なサンプルサイズは戻り値の 2 倍です) 。
また、テスト対象メトリクスの分散が介入群と対照群で等しいことも前提としています。
構文
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)
別名 : minSampleSizeContinous
引数
baseline — メトリックのベースライン値。 (U)Int* または Float*
sigma — メトリックのベースライン標準偏差。 (U)Int* または Float*
mde — ベースライン値に対する割合としての最小検出効果 (MDE) (例: ベースライン値が 112.25 の場合、MDE が 0.03 であれば、112.25 ± 112.25*0.03 への変化を想定します) 。 (U)Int* または Float*
power — テストに必要な統計的検出力 (1 - 第 II 種過誤の確率) 。 (U)Int* または Float*
alpha — テストに必要な有意水準 (第 I 種過誤の確率) 。 (U)Int* または Float*
戻り値
3 つの要素 minimum_sample_size、detect_range_lower、detect_range_upper を持つ名前付き Tuple を返します。これらはそれぞれ、必要なサンプルサイズ、返される必要サンプルサイズでは検出できない値の範囲の下限 (baseline * (1 - mde) として計算) 、および返される必要サンプルサイズでは検出できない値の範囲の上限 (baseline * (1 + mde) として計算) です (Float64) 。 Tuple(Float64, Float64, Float64)
例
minSampleSizeContinuous
SELECT minSampleSizeContinuous( 112 . 25 , 21 . 1 , 0 . 03 , 0 . 80 , 0 . 05 ) AS sample_size
(616.2931945826209,108.8825,115.6175)
導入バージョン: v22.6.0
2 つのサンプルにおけるコンバージョン率 (比率) を比較する A/B テストで、必要な最小サンプルサイズを計算します。
この記事 で説明されている式を使用します。介入群と対照群のサイズが等しいことを前提としています。戻り値は一方のグループに必要なサンプルサイズです (つまり、実験全体に必要なサンプルサイズはこの戻り値の 2 倍です) 。
構文
minSampleSizeConversion(baseline, mde, power, alpha)
引数
baseline — ベースラインのコンバージョン率。Float*
mde — パーセンテージポイントで表した最小検出可能効果 (MDE) 。 (例: ベースラインのコンバージョン率が 0.25 の場合、MDE が 0.03 であれば、0.25 ± 0.03 への変化を想定します。) Float*
power — テストで必要な統計的検出力 (1 - 第 II 種過誤の確率) 。Float*
alpha — テストで必要な有意水準 (第 I 種過誤の確率) 。Float*
戻り値
3 つの要素 minimum_sample_size、detect_range_lower、detect_range_upper を持つ名前付きTupleを返します。これらはそれぞれ、必要なサンプルサイズ、返される必要サンプルサイズでは検出できない値の範囲の下限 (baseline - mde として計算) 、返される必要サンプルサイズでは検出できない値の範囲の上限 (baseline + mde として計算) を表します。Tuple(Float64, Float64, Float64)
例
minSampleSizeConversion
SELECT minSampleSizeConversion( 0 . 25 , 0 . 03 , 0 . 80 , 0 . 05 ) AS sample_size
(3396.077603219163,0.22,0.28)
導入バージョン: v20.1.0
現在の行から指定したオフセット位置にあるカラムの値を返します。
この関数は非推奨です。data block の物理的な順序に基づいて動作するため、ユーザーが想定する論理的な順序と一致しない可能性があり、エラーを引き起こしやすくなっています。
代わりに、適切なウィンドウ関数の使用を検討してください。
この関数は、allow_deprecated_error_prone_window_functions = 1 を設定することで有効にできます。
構文
neighbor(column, offset[, default_value])
引数
column — 対象のカラム。Any
offset — 現在の行からのオフセット。正の値は後方を、負の値は前方を参照します。Integer
default_value — 任意。オフセットがデータ範囲外になった場合に返す値です。指定しない場合は、カラム型のデフォルト値が使用されます。Any
戻り値
指定したオフセット位置の値を返します。範囲外の場合はデフォルト値を返します。Any
例
使用例
SELECT number , neighbor( number , 2 ) FROM system . numbers LIMIT 10 ;
┌─number─┬─neighbor(number, 2)─┐
│ 0 │ 2 │
│ 1 │ 3 │
│ 2 │ 4 │
│ 3 │ 5 │
│ 4 │ 6 │
│ 5 │ 7 │
│ 6 │ 8 │
│ 7 │ 9 │
│ 8 │ 0 │
│ 9 │ 0 │
└────────┴─────────────────────┘
デフォルト値あり
SELECT number , neighbor( number , 2 , 999 ) FROM system . numbers LIMIT 10 ;
┌─number─┬─neighbor(number, 2, 999)─┐
│ 0 │ 2 │
│ 1 │ 3 │
│ 2 │ 4 │
│ 3 │ 5 │
│ 4 │ 6 │
│ 5 │ 7 │
│ 6 │ 8 │
│ 7 │ 9 │
│ 8 │ 999 │
│ 9 │ 999 │
└────────┴──────────────────────────┘
導入バージョン: v20.8.0
リテラル、リテラルの並び、および複雑な別名 (空白を含むもの、3 桁以上の数字を含むもの、または UUID のように 36 バイト以上の長さを持つもの) をプレースホルダー ? に置き換えます。
構文
引数
戻り値
プレースホルダーに置き換えた指定の文字列を返します。String
例
使用例
SELECT normalizeQuery( '[1, 2, 3, x]' ) AS query
┌─query────┐
│ [?.., x] │
└──────────┘
導入バージョン: v21.2.0
リテラルおよびリテラルの並びをプレースホルダー ? に置き換えますが、複雑な別名 (空白を含むもの、3 桁以上の数字を含むもの、または UUID などのように 36 バイト以上の長さを持つもの) は置き換えません。
これにより、複雑なクエリログをより適切に分析しやすくなります。
構文
normalizeQueryKeepNames(x)
引数
戻り値
指定された文字列をプレースホルダー付きで返します。String
例
使用例
SELECT normalizeQuery( 'SELECT 1 AS aComplexName123' ), normalizeQueryKeepNames( 'SELECT 1 AS aComplexName123' )
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?` │ SELECT ? AS aComplexName123 │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
導入バージョン: v20.8.0
類似したクエリに対して、リテラル値を除外した同一の64ビットハッシュ値を返します。
クエリログの分析に役立ちます。
構文
引数
戻り値
64ビットのハッシュ値を返します。UInt64
例
使用例
SELECT normalizedQueryHash( 'SELECT 1 AS `xyz`' ) != normalizedQueryHash( 'SELECT 1 AS `abc`' ) AS res
normalizedQueryHashKeepNames
導入バージョン: v21.2.0
normalizedQueryHash と同様に、類似したクエリに対してはリテラル値を除いた同一の64ビットのハッシュ値を返しますが、ハッシュ化の前に複雑な別名 (空白を含む、3桁以上の数字を含む、または UUID のように36バイト以上の長さがあるもの) をプレースホルダーに置き換えることはありません。
クエリログの分析に役立ちます。
構文
normalizedQueryHashKeepNames(x)
引数
戻り値
64 ビットのハッシュ値を返します。UInt64
例
使用例
SELECT normalizedQueryHash( 'SELECT 1 AS `xyz123`' ) != normalizedQueryHash( 'SELECT 1 AS `abc123`' ) AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames( 'SELECT 1 AS `xyz123`' ) != normalizedQueryHashKeepNames( 'SELECT 1 AS `abc123`' ) AS normalizedQueryHashKeepNames;
┌─normalizedQueryHash─┐
│ 0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│ 1 │
└──────────────────────────────┘
導入バージョン: v26.4.0
識別子をランダムな単語に、リテラルをランダムな値に置き換えつつ、クエリ構造を維持したまま SQL クエリを難読化します。
この関数は、デバッグ目的でクエリをログに記録したり共有したりする前に、クエリを匿名化するのに役立ちます。
同じ入力クエリであっても、行が異なれば異なる難読化結果が生成されるため、
複数のクエリを扱う際のプライバシー保護に役立ちます。
オプションの tag パラメータは、同じ関数呼び出しが
1 つのクエリ内で複数回使われる場合に、共通部分式除去を防ぎます。これにより、呼び出しごとに異なる難読化結果が生成されます。
特長:
テーブル名、カラム名、別名をランダムな単語に置き換えます
数値リテラルと文字列リテラルをランダムな値に置き換えます
クエリ全体の構造と SQL 構文を保持します
行ごとに異なる結果を生成します
構文
obfuscateQuery(query[, tag])
引数
query — 難読化する SQL クエリ。String
tag — 任意。同じ関数呼び出しが複数回使用される場合に、共通部分式除去を防ぐための値です。
戻り値
識別子とリテラルを置き換えつつ、元のクエリ構造を保持した難読化済みクエリ。String
例
基本的な使い方
SELECT obfuscateQuery( 'SELECT name, age FROM users WHERE age > 30' )
SELECT fruit, number FROM table WHERE number > 12
共通部分式除去を防ぐためのタグ付き
SELECT obfuscateQuery( 'SELECT * FROM t' , 1 ), obfuscateQuery( 'SELECT * FROM t' , 2 )
SELECT a FROM b, SELECT c FROM d
行が異なると結果も異なります
SELECT obfuscateQuery( 'SELECT 1' ) AS a, obfuscateQuery( 'SELECT 1' ) AS b
導入バージョン: v26.4.0
指定した seed を使って SQL クエリを難読化し、決定論的な結果を得られます。
obfuscateQuery() とは異なり、この関数は同じ seed を指定すると常に同じ結果を返します。
そのため、複数回の実行にわたって一貫した難読化が必要な場合や、
テストやデバッグのために同じ難読化済みクエリを再現したい場合に役立ちます。
特徴:
指定した seed に基づく決定論的な難読化
同じ seed からは常に同じ難読化結果を生成
異なる seed からは異なる結果を生成
obfuscateQuery() と同様にクエリの構造を保持
使用例:
再現可能なテストケース
複数回の実行で一貫した匿名化
一貫した難読化済みクエリを用いたデバッグ
構文
obfuscateQueryWithSeed(query, seed)
引数
query — 難読化する SQL クエリ。 String
seed — 難読化に使用するシード。同じシードを指定すると、決定論的な結果が生成されます。 Integer または String
戻り値
指定したシードに基づいて決定論的に生成された、難読化済みのクエリ。 String
例
整数シードを使用した決定論的な難読化
SELECT obfuscateQueryWithSeed( 'SELECT name FROM users' , 42 )
文字列シードによる決定論的な難読化
SELECT obfuscateQueryWithSeed( 'SELECT id, value FROM data' , 'myseed' )
同じシードなら同じ結果になる
SELECT obfuscateQueryWithSeed( 'SELECT 1' , 100 ) = obfuscateQueryWithSeed( 'SELECT 1' , 100 )
導入バージョン: v24.6.0
バイトサイズを表す文字列と、その単位として B、KiB、KB、MiB、MB など (つまり ISO/IEC 80000-13 または 10 進バイト単位) が与えられると、この関数は対応するバイト数を返します。
この関数が入力値を解析できない場合は、例外をスローします。
この関数の逆演算は formatReadableSize と formatReadableDecimalSize です。
構文
引数
x — ISO/IEC 80000-13 または 10 進のバイト単位を使用した、読みやすいサイズ表記。String
戻り値
最も近い整数に切り上げられたバイト数を返します。UInt64
例
使用例
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
┌─readable_sizes─┬───sizes─┐
│ 1 B │ 1 │
│ 1 KiB │ 1024 │
│ 3 MB │ 3000000 │
│ 5.314 KiB │ 5442 │
└────────────────┴─────────┘
導入バージョン: v24.6.0
バイトサイズを表す文字列と、その単位として B、KiB、KB、MiB、MB など (つまり ISO/IEC 80000-13 または10進のバイト単位) を受け取り、対応するバイト数を返します。
入力値を解析できない場合、この関数は NULL を返します。
この関数の逆演算は formatReadableSize と formatReadableDecimalSize です。
構文
parseReadableSizeOrNull(x)
引数
x — ISO/IEC 80000-13 または 10 進バイト単位で表された、人が読みやすい形式のサイズ。String
戻り値
バイト数を返します。最も近い整数に切り上げられ、入力を解析できない場合は NULL を返します。Nullable(UInt64)
例
使用例
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
┌─readable_sizes─┬───sizes─┐
│ 1 B │ 1 │
│ 1 KiB │ 1024 │
│ 3 MB │ 3000000 │
│ 5.314 KiB │ 5442 │
│ invalid │ ᴺᵁᴸᴸ │
└────────────────┴─────────┘
導入バージョン: v24.6.0
バイトサイズを表す文字列を受け取り、単位として B、KiB、KB、MiB、MB など (つまり ISO/IEC 80000-13 または 10 進バイト単位) を含む場合、この関数は対応するバイト数を返します。
この関数が入力値を解析できない場合は、0 を返します。
この関数の逆関数にあたるのは formatReadableSize と formatReadableDecimalSize です。
構文
parseReadableSizeOrZero(x)
引数
x — ISO/IEC 80000-13 または 10 進のバイト単位による、人間が読みやすいサイズ。String
戻り値
最も近い整数に切り上げたバイト数を返します。入力をパースできない場合は 0 を返します。UInt64
例
使用例
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
┌─readable_sizes─┬───sizes─┐
│ 1 B │ 1 │
│ 1 KiB │ 1024 │
│ 3 MB │ 3000000 │
│ 5.314 KiB │ 5442 │
│ invalid │ 0 │
└────────────────┴─────────┘
導入バージョン: v22.7.0
数値の並びの後に時間単位に類する文字列が続く値を解析します。
time delta 文字列では、次の時間単位指定を使用できます。
years, year, yr, y
months, month, mo
weeks, week, w
days, day, d
hours, hour, hr, h
minutes, minute, min, m
seconds, second, sec, s
milliseconds, millisecond, millisec, ms
microseconds, microsecond, microsec, μs, µs, us
nanoseconds, nanosecond, nanosec, ns
複数の時間単位は、区切り文字 (空白、;、-、+、,、:) を使って組み合わせることができます。
年と月の長さは概算です。1 年は 365 日、1 か月は 30.5 日として扱います。
構文
引数
timestr — 数字の並びに、時間の単位を表す文字列が続く値。String
戻り値
秒数を表す値。Float64
例
使用例
SELECT parseTimeDelta( '11s+22min' )
┌─parseTimeDelta('11s+22min')─┐
│ 1331 │
└─────────────────────────────┘
複合時間単位
SELECT parseTimeDelta( '1yr2mo' )
┌─parseTimeDelta('1yr2mo')─┐
│ 36806400 │
└──────────────────────────┘
導入バージョン: v21.4.0
パーティション ID を計算します。
この関数は低速なため、大量の行に対しては呼び出さないでください。
構文
partitionId(column1[, column2, ...])
別名 : partitionID
引数
column1, column2, ... — パーティション ID を返す対象となるカラム。
戻り値
その行が属するパーティション ID を返します。 String
例
使用例
DROP TABLE IF EXISTS tab;
CREATE TABLE tab
(
i int ,
j int
)
ENGINE = MergeTree
PARTITION BY i
ORDER BY tuple();
INSERT INTO tab VALUES ( 1 , 1 ), ( 1 , 2 ), ( 1 , 3 ), ( 2 , 4 ), ( 2 , 5 ), ( 2 , 6 );
SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
┌─i─┬─j─┬─partitionId(i)─┬─_partition_id─┐
│ 1 │ 1 │ 1 │ 1 │
│ 1 │ 2 │ 1 │ 1 │
│ 1 │ 3 │ 1 │ 1 │
│ 2 │ 4 │ 2 │ 2 │
│ 2 │ 5 │ 2 │ 2 │
│ 2 │ 6 │ 2 │ 2 │
└───┴───┴────────────────┴───────────────┘
導入バージョン: v21.9.0
現在のクエリの ID を返します。
クエリの他のパラメータは、system.query_log テーブルの query_id フィールドから取得できます。
initialQueryID 関数とは異なり、queryID は分片ごとに異なる結果を返す場合があります。
構文
別名 : query_id
引数
戻り値
現在のクエリIDを返します。 String
例
使用例
CREATE TABLE tmp (str String) ENGINE = Log ;
INSERT INTO tmp ( * ) VALUES ( 'a' );
SELECT count ( DISTINCT t) FROM ( SELECT queryID() AS t FROM remote ( '127.0.0.{1..3}' , currentDatabase(), 'tmp' ) GROUP BY queryID());
┌─count(DISTINCT t)─┐
│ 3 │
└───────────────────┘
導入バージョン: v22.7.0
現在の ClickHouse server のリビジョン番号を返します。
構文
引数
戻り値
現在のClickHouseサーバーのリビジョンを返します。UInt32
例
使用例
┌─revision()─┐
│ 54485 │
└────────────┘
導入バージョン: v1.1.0
処理される各行に対して一意の行番号を返します。
構文
引数
戻り値
データブロック内の行番号を、0 から始まる序数で返します。UInt64
例
使用例
SELECT rowNumberInAllBlocks()
FROM
(
SELECT *
FROM system . numbers_mt
LIMIT 10
)
SETTINGS max_block_size = 2
┌─rowNumberInAllBlocks()─┐
│ 0 │
│ 1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│ 4 │
│ 5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│ 2 │
│ 3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│ 6 │
│ 7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│ 8 │
│ 9 │
└────────────────────────┘
導入バージョン: v1.1.0
rowNumberInBlock は、処理対象の各ブロック について、現在の行の番号を返します。
返される番号は、各ブロックごとに 0 から始まります。
構文
引数
戻り値
0 から始まるデータブロック内の行の序数を返します。UInt64
例
使用例
SELECT rowNumberInBlock()
FROM
(
SELECT *
FROM system . numbers_mt
LIMIT 10
) SETTINGS max_block_size = 2
┌─rowNumberInBlock()─┐
│ 0 │
│ 1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│ 0 │
│ 1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│ 0 │
│ 1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│ 0 │
│ 1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│ 0 │
│ 1 │
└────────────────────┘
導入バージョン: v1.1.0
データブロックの各行について、集約関数の状態を累積します。
構文
runningAccumulate(agg_state[, grouping])
引数
agg_state — 集約関数の状態。AggregateFunction
grouping — 任意。グループ化キー。grouping の値が変わると、関数の状態はリセットされます。等価演算子が定義されている任意のサポート対象データ型を指定できます。Any
戻り値
各行の累積結果を返します。Any
例
initializeAggregation を使用した使用例
WITH initializeAggregation( 'sumState' , number ) AS one_row_sum_state
SELECT
number ,
finalizeAggregation(one_row_sum_state) AS one_row_sum,
runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers( 5 );
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│ 0 │ 0 │ 0 │
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 3 │
│ 3 │ 3 │ 6 │
│ 4 │ 4 │ 10 │
└────────┴─────────────┴────────────────┘
導入バージョン: v21.3.0
同時実行されているイベント数を計算します。
各イベントには開始時刻と終了時刻があります。
開始時刻はイベントに含まれますが、終了時刻は含まれません。
開始時刻と終了時刻のカラムは、同じデータ型である必要があります。
この関数は、各イベントの開始時刻ごとに、アクティブな (同時実行中の) イベントの総数を計算します。
要件 イベントは開始時刻の昇順で並んでいる必要があります。
この要件に違反すると、関数は例外をスローします。
各データブロックは個別に処理されます。
異なるデータブロックに属するイベントが重なっている場合、正しく処理できません。
構文
runningConcurrency( start , end )
引数
戻り値
各イベントの開始時点で同時に発生しているイベント数を返します。UInt32
例
使用例
SELECT start , runningConcurrency( start , end ) FROM example_table;
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │ 1 │
│ 2025-03-06 │ 2 │
│ 2025-03-07 │ 3 │
│ 2025-03-11 │ 2 │
└────────────┴────────────────────────────────┘
導入バージョン: v1.1.0
データブロック内で連続する2つの行の値の差を計算します。
最初の行には 0 を返し、2 行目以降は直前の行との差を返します。
この関数の結果は、対象となるデータブロックと、そのブロック内でのデータの順序に依存します。
runningDifference() の計算時の行の順序は、ユーザーに返される行の順序と異なる場合があります。
これを防ぐには、ORDER BY を含むサブクエリを作成し、その外側でこの関数を呼び出します。
ブロックサイズが結果に影響する点に注意してください。
runningDifference の内部状態は、新しいブロックごとにリセットされます。
構文
引数
x — 連続する値の差分を計算する対象のカラム。Any
戻り値
連続する値どうしの差分を返します。最初の行は 0 です。
例
使用例
SELECT
EventID,
EventTime,
runningDifference(EventTime) AS delta
FROM
(
SELECT
EventID,
EventTime
FROM events
WHERE EventDate = '2025-11-24'
ORDER BY EventTime ASC
LIMIT 5
);
┌─EventID─┬───────────EventTime─┬─delta─┐
│ 1106 │ 2025-11-24 00:00:04 │ 0 │
│ 1107 │ 2025-11-24 00:00:05 │ 1 │
│ 1108 │ 2025-11-24 00:00:05 │ 0 │
│ 1109 │ 2025-11-24 00:00:09 │ 4 │
│ 1110 │ 2025-11-24 00:00:10 │ 1 │
└─────────┴─────────────────────┴───────┘
ブロックサイズの影響の例
SELECT
number ,
runningDifference( number + 1 ) AS diff
FROM numbers( 100000 )
WHERE diff != 1 ;
┌─number─┬─diff─┐
│ 0 │ 0 │
└────────┴──────┘
┌─number─┬─diff─┐
│ 65536 │ 0 │
└────────┴──────┘
runningDifferenceStartingWithFirstValue
導入バージョン: v1.1.0
データブロック内で連続する行の値の差を計算しますが、runningDifference とは異なり、最初の行については 0 ではなく実際の値を返します。
非推奨 現在処理中のデータブロック内の差分しか返しません。
この挙動はエラーを招きやすいため、この関数は非推奨です。
代わりに ウィンドウ関数 を使用することを推奨します。 この関数の使用を許可するには、設定 allow_deprecated_error_prone_window_functions を使用できます。
構文
runningDifferenceStartingWithFirstValue(x)
引数
x — 連続する値の差分を計算する対象のカラム。Any
戻り値
連続する値同士の差を返します。先頭の行については、その行の値を返します。Any
例
使用例
SELECT
number ,
runningDifferenceStartingWithFirstValue( number ) AS diff
FROM numbers( 5 );
┌─number─┬─diff─┐
│ 0 │ 0 │
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 1 │
│ 4 │ 1 │
└────────┴──────┘
導入バージョン: v20.1.0
server の初回起動時に生成される、ランダムで一意な UUID (v4) を返します。
この UUID は永続化されるため、2 回目、3 回目以降に server を起動しても、同じ UUID が返されます。
構文
引数
戻り値
サーバーのランダムなUUIDを返します。UUID
例
使用例
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f │
└──────────────────────────────────────────┘
導入バージョン: v21.9.0
分散クエリにおける分片の総数を返します。
クエリが分散されていない場合は、定数値 0 が返されます。
構文
引数
戻り値
分片の総数、または 0 を返します。UInt32
例
使用例
-- shardCount()も示している上記のshardNum()の例を参照してください。
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE = Distributed (test_cluster_two_shards_localhost, system , one, dummy);
SELECT shardCount() FROM shard_count_example;
┌─shardCount()─┐
│ 2 │
│ 2 │
└──────────────┘
導入バージョン: v21.9.0
分散クエリでデータの一部を処理する分片の番号を返します。
番号は 1 から始まります。
クエリが分散クエリでない場合は、定数値 0 が返されます。
構文
引数
戻り値
分片の索引、または定数 0 を返します。UInt32
例
使用例
CREATE TABLE shard_num_example (dummy UInt8)
ENGINE = Distributed (test_cluster_two_shards_localhost, system , one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│ 0 │ 1 │ 2 │
│ 0 │ 2 │ 2 │
└───────┴────────────┴──────────────┘
導入バージョン: v22.6.0
設定されている場合は、現在のサーバーの Secure Sockets Layer (SSL) 証明書に関する情報を表示します。
接続の検証に OpenSSL 証明書を使用するように ClickHouse を設定する方法について詳しくは、TLS の設定 を参照してください。
構文
引数
戻り値
設定された SSL 証明書に関連するキー・バリューのペアを格納したマップを返します。Map(String, String)
例
使用例
SELECT showCertificate() FORMAT LineAsString;
{'version':'1','serial_number':'2D9071D64530052D48308473922C7ADAFA85D6C5','signature_algo':'sha256WithRSAEncryption','issuer':'/CN=marsnet.local CA','not_before':'May 7 17:01:21 2024 GMT','not_after':'May 7 17:01:21 2025 GMT','subject':'/CN=chnode1','pkey_algo':'rsaEncryption'}
導入バージョン: v1.1.0
指定した秒数だけクエリの実行を一時停止します。
この関数は主に、テストやデバッグのために使用されます。
sleep() 関数は、クエリのパフォーマンスやシステムの応答性に悪影響を及ぼす可能性があるため、通常、本番環境では使用すべきではありません。
ただし、次のような場面では有用です。
テスト : ClickHouse のテストやベンチマークを行う際に、遅延をシミュレートしたり一時停止を挟んだりして、特定の条件下でシステムがどのように動作するかを観察したい場合があります。
デバッグ : 特定の時点におけるシステムの状態やクエリの実行状況を確認する必要がある場合は、sleep() を使って一時停止を入れることで、関連情報を調査または収集できます。
シミュレーション : ネットワークレイテンシーや外部システムへの依存関係など、遅延や一時停止が発生する実際の状況をシミュレートしたい場合があります。
sleep() 関数は、ClickHouse システム全体のパフォーマンスや応答性に影響を及ぼすおそれがあるため、本当に必要な場合にのみ慎重に使用することが重要です。
セキュリティ上の理由により、この関数を実行できるのは、デフォルトのユーザープロファイル (allow_sleep が有効な場合) のみです。
構文
引数
戻り値
0 を返します。UInt8
例
使用例
-- このクエリは完了するまで2秒間一時停止します。
-- この間、結果は返されず、クエリはハングまたは応答なしの状態に見えます。
SELECT sleep( 2 );
┌─sleep(2)─┐
│ 0 │
└──────────┘
1 行 in set. Elapsed: 2.012 sec.
導入バージョン: v1.1.0
結果セットの各行ごとに、指定した秒数だけクエリの実行を一時停止します。
sleepEachRow() 関数は、sleep() 関数と同様に、主にテストやデバッグのために使用されます。
この関数を使うと、各行の処理ごとに遅延や一時停止を発生させることができ、次のような場面で役立ちます。
テスト : 特定の条件下で ClickHouse の性能をテストまたはベンチマークする際に、sleepEachRow() を使って、処理される各行ごとに遅延や一時停止を発生させることができます。
デバッグ : 処理される各行について、システムの状態やクエリの実行状況を確認する必要がある場合は、sleepEachRow() で一時停止を入れることで、関連情報を調査したり収集したりできます。
シミュレーション : 場合によっては、外部システムやネットワーク遅延を扱うケースのように、処理される各行ごとに遅延や一時停止が発生する実運用に近い状況をシミュレートしたいことがあります。
sleep() 関数と同様に、sleepEachRow() は必要な場合にのみ慎重に使用することが重要です。特に大きな結果セットを扱う場合、ClickHouse システム全体の性能や応答性に大きな影響を与える可能性があります。
構文
引数
戻り値
各行に 0 を返します。UInt8
例
使用例
-- 出力は遅延し、各行の間に0.5秒の停止が入ります。
SELECT number , sleepEachRow( 0 . 5 ) FROM system . numbers LIMIT 5 ;
┌─number─┬─sleepEachRow(0.5)─┐
│ 0 │ 0 │
│ 1 │ 0 │
│ 2 │ 0 │
│ 3 │ 0 │
│ 4 │ 0 │
└────────┴───────────────────┘
structureToCapnProtoSchema
導入バージョン: v23.8.0
ClickHouseのテーブル構造をCapnProtoフォーマットのスキーマに変換する関数
構文
structureToCapnProtoSchema(table_structure, message )
引数
戻り値
例
ランダム
SELECT structureToCapnProtoSchema( 's String, x UInt32' , 'MessageName' ) format TSVRaw
struct MessageName
{
s @0 : Data;
x @1 : UInt32;
}
structureToProtobufSchema
導入バージョン: v23.8.0
ClickHouseのテーブル構造をProtobufフォーマットのスキーマに変換します。
この関数は、ClickHouseのテーブル構造定義を受け取り、proto3構文の
Protocol Buffers (Protobuf) スキーマ定義に変換します。これは、データ交換用にClickHouseの
テーブル構造に対応したProtobufスキーマを生成する際に役立ちます。
構文
structureToProtobufSchema(structure, message_name)
引数
structure — 文字列で指定する ClickHouse テーブルの構造定義です (例: ‘column1 Type1, column2 Type2’) 。String
message_name — 生成されるスキーマ内の Protobuf メッセージ型の名前です。String
戻り値
入力された ClickHouse テーブル構造に対応する、proto3 構文の Protobuf スキーマ定義を返します。String
例
ClickHouse テーブル構造を Protobuf スキーマに変換する
SELECT structureToProtobufSchema( 's String, x UInt32' , 'MessageName' ) FORMAT TSVRaw;
syntax = "proto3";
message MessageName
{
bytes s = 1;
uint32 x = 2;
}
導入バージョン: v20.12.0
サーバーが待ち受けているネイティブインターフェイス のTCPポート番号を返します。
分散テーブルに対して実行された場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を返します。
構文
引数
戻り値
TCPポート番号を返します。UInt16
例
使用例
┌─tcpPort()─┐
│ 9000 │
└───────────┘
導入バージョン: v1.1.0
引数 x が true の場合、例外をスローします。
error_code 引数を使用するには、設定パラメータ allow_custom_error_code_in_throw を有効にする必要があります。
構文
throwIf(x[, message[, error_code]])
引数
戻り値
条件が false の場合は 0 を返し、条件が true の場合は例外がスローされます。UInt8
例
使用例
SELECT throwIf( number = 3 , 'Too many' ) FROM numbers( 10 );
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 19.14.1):
Code: 395. DB::Exception: Received from localhost:9000. DB::Exception: Too many.
導入バージョン: v1.1.0
指定された値のデータ型の内部名を返します。
関数 toTypeName とは異なり、返されるデータ型には Const や LowCardinality などの内部ラッパーのカラムが含まれる場合があります。
構文
引数
value — 内部データ型を返す対象となる値。Any
戻り値
値を表現するために使用される内部データ型を返します。String
例
使用例
SELECT toColumnTypeName( CAST ( '2025-01-01 01:02:03' AS DateTime ));
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32) │
└───────────────────────────────────────────────────────────┘
導入バージョン: v1.1.0
渡された引数の型名を返します。
NULL が渡された場合、この関数は型 Nullable(Nothing) を返します。これは ClickHouse の内部的な NULL 表現に対応します。
構文
引数
戻り値
入力値の型名を返します。String
例
使用例
┌─toTypeName(123)─┐
│ UInt8 │
└─────────────────┘
導入バージョン: v26.5.0
ClickHouse SQL のクエリ文字列をトークン化し、トークンの配列を返します。
各トークンは、開始位置 (バイト単位) 、終了位置、およびトークンの型を持つ名前付きタプルです。
構文
引数
query — ClickHouse SQLクエリの文字列。String。
戻り値
クエリのトークンを表す、名前付きタプル (begin UInt64, end UInt64, type Enum8(...)) の配列。Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))
例
シンプル
SELECT tokenizeQuery( 'SELECT 1' )
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]
導入バージョン: v22.6.0
トランザクションの ID を返します。
この関数は実験的機能の一部です。
実験的なトランザクションサポートを有効にするには、次の設定を 設定 に追加してください。 < clickhouse >
< allow_experimental_transactions > 1 </ allow_experimental_transactions >
</ clickhouse >
詳しくは、Transactional (ACID) support のページを参照してください。
構文
引数
戻り値
start_csn、local_tid、host_id で構成されるタプルを返します。
start_csn: グローバルな連番。このトランザクションの開始時点で確認されていた最新のコミットタイムスタンプです。
local_tid: ローカルな連番。特定の start_csn 内で、このホストによって開始された各トランザクションごとに一意です。
host_id: このトランザクションを開始したホストの UUID。
Tuple(UInt64, UInt64, UUID)
例
使用例
BEGIN TRANSACTION ;
SELECT transactionID();
ROLLBACK ;
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘
transactionLatestSnapshot
導入バージョン: v22.6.0
読み取りに利用可能なトランザクション の最新のスナップショット (Commit Sequence Number) を返します。
この関数は実験的な機能群の一部です。実験的なトランザクションサポートを有効にするには、設定に次の項目を追加してください。 < clickhouse >
< allow_experimental_transactions > 1 </ allow_experimental_transactions >
</ clickhouse >
詳細については、Transactional (ACID) support のページを参照してください。
構文
transactionLatestSnapshot()
引数
戻り値
トランザクションの最新スナップショット (CSN) を返します。UInt64
例
使用例
BEGIN TRANSACTION ;
SELECT transactionLatestSnapshot();
ROLLBACK ;
┌─transactionLatestSnapshot()─┐
│ 32 │
└─────────────────────────────┘
transactionOldestSnapshot
導入バージョン: v22.6.0
実行中のトランザクション から参照可能な、最も古いスナップショット (Commit Sequence Number) を返します。
この関数は実験的機能セットの一部です。以下の設定を構成に追加して、実験的なトランザクションサポートを有効にしてください。 < clickhouse >
< allow_experimental_transactions > 1 </ allow_experimental_transactions >
</ clickhouse >
詳細は、Transactional (ACID) support のページを参照してください。
構文
transactionOldestSnapshot()
引数
戻り値
トランザクションの最も古いスナップショット (CSN) を返します。UInt64
例
使用例
BEGIN TRANSACTION ;
SELECT transactionOldestSnapshot();
ROLLBACK ;
┌─transactionOldestSnapshot()─┐
│ 32 │
└─────────────────────────────┘
導入バージョン: v1.1.0
明示的に定義された要素間のマッピングに基づいて、値を変換します。
この関数には 2 つのバリエーションがあります。
transform(x, array_from, array_to, default) - マッピング用の配列を使って x を変換し、一致しない要素にはデフォルト値を返します
transform(x, array_from, array_to) - 同じ変換を行いますが、一致する要素が見つからない場合は元の x を返します
この関数は array_from 内で x を検索し、同じ索引の array_to にある対応する要素を返します。
x が array_from 内で見つからない場合は、default の値 (4 パラメータ版) または元の x (3 パラメータ版) を返します。
array_from に一致する要素が複数ある場合は、最初の一致に対応する要素を返します。
要件:
array_from と array_to は同じ数の要素を持っている必要があります
4 パラメータ版: transform(T, Array(T), Array(U), U) -> U - ここで T と U には、互換性のある異なる型を使用できます
3 パラメータ版: transform(T, Array(T), Array(T)) -> T - ここですべての型は同じである必要があります
構文
transform(x, array_from, array_to[, default])
引数
戻り値
x が array_from の要素に一致する場合は array_to の対応する値を返し、それ以外の場合は default (指定されている場合) または x (default が指定されていない場合) を返します。Any
例
transform(T, Array(T), Array(U), U) -> U
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other' ) AS title,
count () AS c
FROM test . hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC
┌─title─────┬──────c─┐
│ Yandex │ 498635 │
│ Google │ 229872 │
│ Other │ 104472 │
└───────────┴────────┘
transform(T, Array(T), Array(T)) -> T
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count () AS c
FROM test . hits
GROUP BY domain(Referer)
ORDER BY count () DESC
LIMIT 10
┌─s──────────────┬───────c─┐
│ │ 2906259 │
│ www.yandex │ 867767 │
│ ███████.ru │ 313599 │
│ mail.yandex.ru │ 107147 │
│ ██████.ru │ 100355 │
│ █████████.ru │ 65040 │
│ news.yandex.ru │ 64515 │
│ ██████.net │ 59141 │
│ example.com │ 57316 │
└────────────────┴─────────┘
導入バージョン: v22.9.0
2 つの uniqThetaSketch オブジェクト に対して積集合の計算 (集合演算 ∩) を行い、その結果として新しい uniqThetaSketch を返します。
構文
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
引数
戻り値
積集合の結果を含む新しい uniqThetaSketch。 UInt64
例
使用例
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
( SELECT arrayReduce( 'uniqThetaState' , [1, 2]) AS a, arrayReduce( 'uniqThetaState' , [2, 3, 4]) AS b);
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│ 1 │ 2 │ 3 │
└───────────────┴───────────────┴───────────────┘
導入バージョン: v22.9.0
2 つの uniqThetaSketch オブジェクトに対して a_not_b 計算 (集合演算 ×) を実行し、その結果として新しい uniqThetaSketch を返します。
構文
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
引数
戻り値
a_not_b の結果を含む、新しい uniqThetaSketch を返します。UInt64
例
使用例
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
( SELECT arrayReduce( 'uniqThetaState' , [2, 3, 4]) AS a, arrayReduce( 'uniqThetaState' , [1, 2]) AS b);
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│ 2 │ 3 │ 2 │
└─────────┴───────────────┴───────────────┘
導入バージョン: v22.9.0
2 つの uniqThetaSketch オブジェクトに対してユニオン計算 (集合演算 ∪) を行い、結果として新しい uniqThetaSketch を返します。
構文
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
引数
戻り値
ユニオン結果を含む新しい uniqThetaSketch を返します。UInt64
例
使用例
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
( SELECT arrayReduce( 'uniqThetaState' , [1, 2]) AS a, arrayReduce( 'uniqThetaState' , [2, 3, 4]) AS b);
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│ 4 │ 2 │ 3 │
└───────────┴───────────────┴───────────────┘
導入バージョン: v1.1.0
サーバーの稼働時間を秒単位で返します。
分散テーブルに対して実行すると、この関数は各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を生成します。
構文
引数
戻り値
serverの稼働時間を秒単位で返します。 UInt32
例
使用例
SELECT uptime() AS Uptime
┌─Uptime─┐
│ 55867 │
└────────┘
導入バージョン: v25.2.0
Variant カラムから、指定した型のカラムを抽出します。
構文
variantElement(variant, type_name[, default_value])
引数
variant — Variant カラム。 Variant
type_name — 抽出する Variant 型の名前。 String
default_value — variant に指定した型の値がない場合に使用されるデフォルト値。任意の型を指定できます。省略可能です。 Any
戻り値
Variant カラムから指定した Variant 型の値を抽出したカラムを返します。 Any
例
使用例
CREATE TABLE test (v Variant(UInt64, String, Array (UInt64))) ENGINE = Memory;
INSERT INTO test VALUES ( NULL ), ( 42 ), ( 'Hello, World!' ), ([1, 2, 3]);
SELECT v, variantElement(v, 'String' ), variantElement(v, 'UInt64' ), variantElement(v, 'Array(UInt64)' ) FROM test;
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ [] │
│ 42 │ ᴺᵁᴸᴸ │ 42 │ [] │
│ Hello, World! │ Hello, World! │ ᴺᵁᴸᴸ │ [] │
│ [1,2,3] │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ [1,2,3] │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘
導入バージョン: v24.2.0
Variant カラムの各行について、Variant 型名を返します。行に NULL が含まれている場合、その行については ‘None’ を返します。
構文
引数
戻り値
各行の Variant 型名を格納した Enum カラムを返します。Enum
例
使用例
CREATE TABLE test (v Variant(UInt64, String, Array (UInt64))) ENGINE = Memory;
INSERT INTO test VALUES ( NULL ), ( 42 ), ( 'Hello, World!' ), ([1, 2, 3]);
SELECT variantType(v) FROM test;
┌─variantType(v)─┐
│ None │
│ UInt64 │
│ String │
│ Array(UInt64) │
└────────────────┘
導入バージョン: v1.1.0
ClickHouse の現在のバージョンを、major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release 形式の文字列として返します。
分散テーブル上で実行された場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を返します。
構文
引数
戻り値
現在の ClickHouse のバージョンを返します。String
例
使用例
┌─version()─┐
│ 24.2.1.1 │
└───────────┘
導入バージョン: v1.1.0
値をテキスト形式 (タブ区切り) でコンソールに出力する際の、おおよその幅を計算します。
この関数は、システムが Pretty フォーマットを実装するために使用されます。
NULL は、Pretty フォーマットでは NULL に対応する文字列として表現されます。
構文
引数
戻り値
テキストフォーマットで表示した場合のおおよその幅を返します。UInt64
例
NULL の表示幅を計算
SELECT visibleWidth( NULL )
┌─visibleWidth(NULL)─┐
│ 4 │
└────────────────────┘
導入バージョン: v21.11.0
現在のZooKeeperセッションの稼働時間を秒単位で返します。
構文
引数
戻り値
現在の ZooKeeper セッションの稼働時間を秒単位で返します。 UInt32
例
使用例
SELECT zookeeperSessionUptime();
┌─zookeeperSessionUptime()─┐
│ 286 │
└──────────────────────────┘