メインコンテンツへスキップ
メインコンテンツへスキップ

その他の関数

注記

以下の関数のドキュメントは、system.functions システムテーブルから生成されています。

FQDN

導入バージョン: v20.1

ClickHouse サーバーの FQDN(完全修飾ドメイン名)を返します。

構文

fqdn()

別名: fullHostName

引数

  • なし。

戻り値

ClickHouse サーバーの完全修飾ドメイン名を返します。String

使用例

SELECT fqdn()
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘

MACNumToString

導入バージョン: v1.1

UInt64 型の数値をビッグエンディアン形式の MAC アドレスとして解釈します。 対応する MAC アドレスを、AA:BB:CC:DD:EE:FF(16 進数表記の値をコロンで区切った形式)の文字列として返します。

構文

MACNumToString(num)

引数

  • num — UInt64 型の整数値。UInt64

戻り値

AA:BB:CC:DD:EE:FF という形式の MAC アドレスを返します。String

使用例

SELECT MACNumToString(149809441867716) AS mac_address;
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘

MACStringToNum

導入バージョン: v1.1

MACNumToString の逆関数です。MAC アドレスの形式が不正な場合は 0 を返します。

構文

MACStringToNum(s)

引数

  • s — MAC アドレスを表す文字列。String

返り値

UInt64 型の数値を返します。UInt64

使用例

SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
1108152157446

MACStringToOUI

導入バージョン: v1.1

AA:BB:CC:DD:EE:FF 形式(16進数表記でコロン区切り)の MAC アドレスを受け取り、先頭の 3 オクテットを UInt64 型の数値として返します。MAC アドレスの形式が不正な場合は 0 を返します。

構文

MACStringToOUI(s)

引数

  • s — MAC アドレス文字列。String

返される値

先頭 3 オクテットを UInt64 型の数値として返します。UInt64

使用例

SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
20566

__applyFilter

導入: v25.10

JOIN の実行時フィルタリング用の専用関数です。

構文

__applyFilter(filter_name, key)

引数

  • filter_name — ランタイムフィルターの内部名。BuildRuntimeFilterStep によって構築されます。String
  • key — フィルター内に含まれているかどうかを検査される、任意の型の値

戻り値

そのキーをフィルタリングすべき場合は False を返します。Bool

この関数はユーザークエリでの使用を想定していません。最適化の過程でクエリプランに追加される可能性があります。

__patchPartitionID

導入バージョン: v25.5

内部関数です。パーツ名と、パッチパーツのカラム名のハッシュ値を受け取り、パッチパーツのパーティション名を返します。引数は正しいパーツ名でなければならず、それ以外の場合の動作は未定義です。

構文

引数

  • なし。

戻り値

authenticatedUser

導入バージョン: v25.11

EXECUTE AS コマンドを使用してセッションのユーザーが切り替えられている場合、この関数は認証およびセッション作成に使用された元のユーザー名を返します。
エイリアス: authUser()

構文

authenticatedUser()

別名: authUser

引数

  • なし。

戻り値

認証されたユーザーの名前。String

使用例

EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘

bar

導入バージョン: v1.1

棒グラフを作成します。 幅が (x - min) に比例し、x = max のとき width 文字分となるバーを描画します。 バーは 1 文字を 1/8 単位に分割した精度で描画されます。

構文

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 │ █████████████▎     │
└────┴────────┴────────────────────┘

blockNumber

導入バージョン: v1.1

行を含むブロックに対して、単調増加するシーケンス番号を返します。 ブロック番号の更新はベストエフォートで行われるため、完全に正確でない場合があります。

構文

blockNumber()

引数

  • なし。

戻り値

行が含まれているデータブロックのシーケンス番号。 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 │
└───────────────┘

blockSerializedSize

導入バージョン: v20.3

ディスク上にある値ブロックの非圧縮サイズ(バイト単位)を返します。

構文

blockSerializedSize(x1[, x2[, ...]])

引数

  • x1[, x2, ...] — 非圧縮サイズを取得する対象となる、任意個の値。Any

返り値

圧縮なしで値のブロックとしてディスクに書き込まれるバイト数を返します。UInt64

使用例

SELECT blockSerializedSize(maxState(1)) AS x;
┌─x─┐
│ 2 │
└───┘

blockSize

導入バージョン: v1.1

ClickHouse では、クエリは blocks(chunk)単位で処理されます。 この関数は、この関数が呼び出されるブロックのサイズ(行数)を返します。

構文

blockSize()

引数

  • なし。

戻り値

現在のブロック内の行数を返します。UInt64

使用例

SELECT blockSize()
FROM system.numbers LIMIT 5
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘

buildId

導入バージョン: v20.5

実行中の ClickHouse サーバー バイナリに対して、コンパイラによって生成されたビルド ID を返します。 分散テーブルのコンテキストで実行された場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。 それ以外の場合は、定数値を返します。

構文

buildId()

引数

  • なし。

戻り値

ビルド ID を返します。String

使用例

SELECT buildId()
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘

byteSize

導入バージョン: v21.1

引数のメモリ上での非圧縮バイトサイズの推定値を返します。 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 │
└────────────────────────────┘

catboostEvaluate

導入バージョン: v22.9

外部 catboost モデルを評価します。CatBoost は、Yandex が機械学習向けに開発したオープンソースの勾配ブースティングライブラリです。 catboost モデルへのパスと、モデル引数(特徴量)を受け取ります。

前提条件

  1. catboost 評価用ライブラリをビルドする

catboost モデルを評価する前に、libcatboostmodel.<so|dylib> ライブラリを使用可能な状態にしておく必要があります。コンパイル手順については CatBoost のドキュメント を参照してください。

次に、ClickHouse の設定で libcatboostmodel.<so|dylib> へのパスを指定します。

<clickhouse>
...
    <catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>

セキュリティおよび分離の観点から、モデルの評価はサーバープロセス内ではなく、clickhouse-library-bridge プロセス内で実行されます。 catboostEvaluate() が最初に実行されたとき、ライブラリブリッジプロセスがまだ起動していなければ、サーバーがそのプロセスを起動します。両プロセスは HTTP インターフェイスを介して通信します。デフォルトでは、ポート 9012 が使用されます。別のポートを指定することも可能で、ポート 9012 がすでに他のサービスに割り当てられている場合に便利です。

<library_bridge>
    <port>9019</port>
</library_bridge>
  1. libcatboost を使用して catboost モデルを学習させる

トレーニングデータセットから catboost モデルを学習させる方法については、モデルの学習と適用を参照してください。

構文

catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])

引数

  • path_to_model — CatBoost モデルのパス。const String
  • feature — 1つ以上のモデル特徴量/引数。Float*

戻り値

モデルの評価結果を返します。Float64

使用例

catboostEvaluate

SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
4.695691092573497

colorOKLCHToSRGB

導入バージョン: v25.7

OKLCH 知覚色空間から、一般的な sRGB 色空間へ色を変換します。

L[0...1] の範囲外、C が負、または H[0...360] の範囲外の場合、結果は実装依存です。

注記

OKLCH は OKLab 色空間の円柱座標バージョンです。 その 3 つの座標は L(明度 [0...1] の範囲)、C(彩度(クロマ) >= 0)、H(色相、度単位 [0...360])です。 OKLab/OKLCH は、計算コストを低く抑えつつ知覚的な一様性を実現するよう設計されています。

この変換は colorSRGBToOKLCH の逆変換です:

  1. OKLCH から OKLab への変換
  2. OKLab から Linear sRGB への変換
  3. Linear sRGB から sRGB への変換

2 番目の引数 gamma は、最後の段階で使用されます。

OKLCH 空間における色の一覧と、それらが sRGB の色とどのように対応するかについては、https://oklch.com/ を参照してください。

構文

colorOKLCHToSRGB(tuple [, gamma])

引数

  • tuple — 数値 L, C, H の 3 要素からなるタプル。L は範囲 [0...1]C >= 0H は範囲 [0...360]Tuple(Float64, Float64, Float64)
  • gamma — 省略可能。リニア sRGB を、各チャネル x に対して (x ^ (1 / gamma)) * 255 を適用することで sRGB に戻す際に使用される指数。デフォルト値は 2.2Float64

戻り値

sRGB の色値を表すタプル (R, G, B) を返します。Tuple(Float64, Float64, Float64)

OKLCH を sRGB に変換

SELECT colorOKLCHToSRGB((0.4466, 0.0991, 45.44), 2.2) AS rgb
WITH colorOKLCHToSRGB((0.7, 0.1, 54)) as t SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB
┌─rgb──────────────────────────────────────────────────────┐
│ (127.03349738778945,66.06672044472008,37.11802592155851) │
└──────────────────────────────────────────────────────────┘
┌─RGB──────────┐
│ (205,139,97) │
└──────────────┘

colorSRGBToOKLCH

導入バージョン: v25.7

sRGB カラースペースでエンコードされた色を、知覚的に一様な OKLCH カラースペースへ変換します。

いずれかの入力チャネルが [0...255] の範囲外である場合、またはガンマ値が正でない場合、その挙動は実装依存です。

注記

OKLCH は OKLab カラースペースの円筒座標版です。 3 つの座標は、それぞれ L(明度で、範囲は [0...1])、C(クロマで、>= 0)、H(色相で、度数法による [0...360] の範囲)です。 OKLab/OKLCH は、計算コストを低く抑えつつ知覚的に一様になるよう設計されています。

変換は次の 3 段階で構成されます:

  1. sRGB から Linear sRGB への変換
  2. Linear sRGB から OKLab への変換
  3. OKLab から OKLCH への変換

OKLCH 空間における色の例と、それらが sRGB の色にどのように対応するかについては、https://OKLCH.com/ を参照してください。

構文

colorSRGBToOKLCH(tuple[, gamma])

引数

  • tuple[0...255] の範囲にある R, G, B の 3 つの値からなるタプル。Tuple(UInt8, UInt8, UInt8)
  • gamma — オプション。各チャネル x に対して (x / 255)^gamma を適用することで sRGB を線形化する際に使用する指数。デフォルト値は 2.2Float64

返り値

OKLCH 色空間の値を表すタプル (L, C, H) を返します。Tuple(Float64, Float64, Float64)

使用例

sRGB を OKLCH に変換する

SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch
┌─lch─────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.10442699545678624,45.907345481930236) │
└─────────────────────────────────────────────────────────────┘

connectionId

導入: v21.3

現在のクエリを送信したクライアントの接続 ID を返します。 この関数はデバッグの場面で最も有用です。 MySQL の CONNECTION_ID 関数との互換性のために作成されました。 本番環境のクエリで使用されることはあまりありません。

構文

connectionId()

引数

  • なし。

戻り値

現在のクライアントの接続IDを返します。UInt64

使用例

SELECT connectionId();
┌─connectionId()─┐
│              0 │
└────────────────┘

countDigits

導入バージョン: v20.8

値を表現するのに必要な10進数の桁数を返します。

注記

この関数は10進数値のスケールを考慮します。つまり、内部の整数型((value * scale))に対して桁数を計算します。

たとえば:

  • countDigits(42) = 2
  • countDigits(42.000) = 5
  • countDigits(0.04200) = 4
ヒント

Decimal64 のオーバーフローは countDigits(x) > 18 で検査できますが、 isDecimalOverflow よりも低速です。

構文

countDigits(x)

引数

戻り値

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 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘

currentDatabase

導入バージョン: v1.1

現在のデータベース名を返します。 データベースを指定する必要がある CREATE TABLE クエリのテーブルエンジンのパラメータで便利です。

SET も参照してください。

構文

currentDatabase()

別名: current_database, SCHEMA, DATABASE

引数

  • なし。

戻り値

現在のデータベース名を返します。String

使用例

SELECT currentDatabase()
┌─currentDatabase()─┐
│ default           │
└───────────────────┘

currentProfiles

導入バージョン: v21.9

現在のユーザーの設定プロファイルの配列を返します。

構文

currentProfiles()

引数

  • なし

返り値

現在のユーザーの SETTINGS プロファイルの配列を返します。Array(String)

使用例

SELECT currentProfiles();
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘

currentQueryID

導入バージョン: v

現在のクエリ ID を返します。

構文

currentQueryID()

別名: current_query_id

引数

  • なし。

戻り値

SELECT currentQueryID();
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘

currentRoles

導入バージョン: v21.9

現在のユーザーに割り当てられているロールの配列を返します。

構文

currentRoles()

引数

  • なし

戻り値

現在のユーザーに割り当てられているロールの配列を返します。Array(String)

使用例

SELECT currentRoles();
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:[email protected]'] │
└────────────────────────────────────────────────┘

currentSchemas

導入バージョン: v23.7

関数 currentDatabase と同じですが、以下の違いがあります。

  • 無視される boolean 引数を受け取ります
  • データベース名を単一要素の配列として返します。

関数 currentSchemas は PostgreSQL との互換性のためにのみ存在します。 代わりに currentDatabase を使用してください。

SET も参照してください。

構文

currentSchemas(bool)

別名: current_schemas

引数

  • bool — 無視されるブール値。Bool

返り値

現在のデータベース名のみを含む 1 要素の配列を返します。Array(String)

使用例

SELECT currentSchemas(true)
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘

currentUser

導入バージョン: v20.1

現在のユーザー名を返します。 分散クエリの場合は、そのクエリを開始したユーザーの名前を返します。

構文

currentUser()

別名: current_user, user

引数

  • なし。

返される値

現在のユーザー名があればそれを、なければクエリを開始したユーザーのログイン名を返します。 String

使用例

SELECT currentUser()
┌─currentUser()─┐
│ default       │
└───────────────┘

defaultProfiles

導入バージョン: v21.9

現在のユーザーに対してデフォルトで適用される設定プロファイル名の配列を返します。

構文

defaultProfiles()

引数

  • なし。

戻り値

現在のユーザーのデフォルト設定プロファイル名の配列を返します。Array(String)

使用例

SELECT defaultProfiles();
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘

defaultRoles

導入バージョン: v21.9

現在のユーザーに設定されているデフォルトロールの配列を返します。

構文

defaultRoles()

引数

  • なし。

返される値

現在のユーザーのデフォルトロールを表す配列を返します。Array(String)

使用例

SELECT defaultRoles();
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:[email protected]'] │
└────────────────────────────────────────────────┘

defaultValueOfArgumentType

導入バージョン: v1.1

指定されたデータ型のデフォルト値を返します。 ユーザーが設定したカスタムカラムのデフォルト値は含まれません。

構文

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)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘

defaultValueOfTypeName

導入バージョン: v1.1

指定された型名のデフォルト値を返します。

構文

defaultValueOfTypeName(type)

引数

  • type — 型名を表す文字列。String

戻り値

指定された型名に対応するデフォルト値を返します。数値型の場合は 0、文字列型の場合は空文字列、Nullable 型の UInt8 または String の場合、あるいは NULL の場合は NULL を返します。

使用例

SELECT defaultValueOfTypeName('Int8');
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘

Nullable の例

SELECT defaultValueOfTypeName('Nullable(Int8)');
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘

displayName

導入バージョン: v22.11

configdisplay_name の値、または設定されていない場合はサーバーの完全修飾ドメイン名 (FQDN) を返します。

構文

displayName()

引数

  • なし。

返される値

設定の display_name の値を返します。設定されていない場合はサーバーの FQDN を返します。String

使用例

SELECT displayName();
┌─displayName()─┐
│ production    │
└───────────────┘

dumpColumnStructure

導入バージョン: v1.1

カラムの内部構造およびデータ型の詳細な説明を出力します。

構文

dumpColumnStructure(x)

引数

  • x — 説明を取得する対象となる値。Any

返り値

値を表現するために使用されるカラム構造の説明を返します。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))                  │
└──────────────────────────────────────────────────────────────┘

enabledProfiles

導入バージョン: v21.9

現在のユーザーに対して有効な設定プロファイル名の配列を返します。

構文

enabledProfiles()

引数

  • なし。

戻り値

現在のユーザーに対して有効になっている設定プロファイル名の配列を返します。Array(String)

使用例

SELECT enabledProfiles();
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘

enabledRoles

導入バージョン: v21.9

現在のユーザーに対して有効なロールを配列で返します。

構文

enabledRoles()

引数

  • なし。

返り値

現在のユーザーに対して有効なロール名を要素とする配列を返します。Array(String)

使用例

SELECT enabledRoles();
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:[email protected]'] │
└────────────────────────────────────────────────────────────────┘

errorCodeToName

導入: v20.12

数値の ClickHouse エラーコードに対応するテキスト形式の名称を返します。 数値エラーコードからエラー名へのマッピングはこちらで参照できます。

構文

errorCodeToName(error_code)

引数

戻り値

error_code に対応するテキスト名を返します。String

使用例

SELECT errorCodeToName(252);
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS       │
└──────────────────────┘

file

導入: v21.3

ファイルを文字列として読み取り、指定したカラムにデータを読み込みます。 ファイルの内容は解釈されません。

file テーブル関数も参照してください。

構文

file(path[, default])

引数

  • 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');

filesystemAvailable

導入バージョン: v20.1

データベースの永続データを格納しているファイルシステム上の空き容量を返します。 オペレーティングシステム用に一部の領域が予約されているため、返される値は常にファイルシステム上の合計空き容量(filesystemUnreserved)より小さくなります。

構文

filesystemAvailable([disk_name])

引数

  • disk_name — 省略可能。空き容量を確認する対象のディスク名。省略した場合はデフォルトのディスクが使用されます。String または FixedString

戻り値

利用可能な残り容量をバイト単位で返します。UInt64

使用例

SELECT formatReadableSize(filesystemAvailable()) AS "利用可能な容量";
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘

filesystemCapacity

導入: v20.1

ファイルシステムの容量(バイト単位)を返します。 データディレクトリへのパスを設定しておく必要があります。

構文

filesystemCapacity([disk_name])

引数

  • disk_name — 省略可。容量を取得する対象のディスク名。省略した場合はデフォルトのディスクが使用されます。String または FixedString

戻り値

ファイルシステムの容量をバイト単位で返します。UInt64

使用例

SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘

filesystemUnreserved

導入バージョン: v22.12

データベースの永続データを保持しているファイルシステム上の、空き領域の合計量を返します(以前は filesystemFree)。
filesystemAvailable も参照してください。

構文

filesystemUnreserved([disk_name])

引数

  • disk_name — 省略可。空き容量の合計を取得するディスクの名前。省略時はデフォルトのディスクを使用します。String または FixedString

返り値

空き容量のバイト数を返します。UInt64

使用例

SELECT formatReadableSize(filesystemUnreserved()) AS "空き容量";
┌─空き容量─┐
│ 32.39 GiB  │
└────────────┘

finalizeAggregation

導入バージョン: v1.1

集約状態を受け取り、この関数は集約結果(または -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 │
└────────┴─────────────┴────────────────┘

flipCoordinates

導入バージョン: v25.10

Point、Ring、Polygon、または MultiPolygon の座標を反転します。Point の場合は座標値を入れ替えます。配列の場合は、各座標ペアに対して同じ変換を再帰的に適用します。

構文

flipCoordinates(geometry)

引数

  • geometry — 変換するジオメトリ。サポートされる型: Point (Tuple(Float64, Float64))、Ring (Array(Point))、Polygon (Array(Ring))、MultiPolygon (Array(Polygon))。

戻り値

座標が反転されたジオメトリ。型は入力と同じです。Point または Ring または Polygon または MultiPolygon

basic_point

SELECT flipCoordinates((1.0, 2.0));
(2.0, 1.0)

リング

SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
[(2.0, 1.0), (4.0, 3.0)]

多角形

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)]]

formatQuery

導入バージョン: v

指定された SQL クエリを、必要に応じて複数行になるよう整形した形式で返します。パースエラーが発生した場合は例外をスローします。 [example:multiline]

構文

formatQuery(query)

引数

  • 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)

formatQueryOrNull

導入バージョン: v

指定された SQL クエリを、必要に応じて複数行になる書式化済みの形式で返します。パースエラーが発生した場合は NULL を返します。 [example:multiline]

構文

formatQueryOrNull(query)

引数

  • query — 整形する SQL クエリ。String

戻り値

整形後のクエリ String

multiline

SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)

formatQuerySingleLine

導入バージョン: v

formatQuery() と同様ですが、返されるフォーマット済み文字列には改行が含まれません。構文解析エラーが発生した場合は例外をスローします。 [example:multiline]

構文

formatQuerySingleLine(query)

引数

  • query — フォーマットする SQL クエリ。String

戻り値

フォーマットされたクエリ String

multiline

SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)

formatQuerySingleLineOrNull

導入バージョン: v

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)

formatReadableDecimalSize

導入バージョン: v22.11

サイズ(バイト数)を指定すると、この関数は接尾辞(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  │
└────────────────┴────────────┘

formatReadableQuantity

導入バージョン: v20.10

数値を渡すと、この関数は四捨五入した数値に接尾辞(千、百万、十億など)を付けた文字列を返します。

この関数は入力として任意の数値型を受け付けますが、内部的にはそれらを Float64 にキャストします。 大きな値では最適でない結果になる場合があります。

構文

formatReadableQuantity(x)

引数

  • x — フォーマットする数値。UInt64

返り値

サフィックスを付けた丸め済みの数値を文字列として返します。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    │
└────────────────┴───────────────────┘

formatReadableSize

導入バージョン: v1.1

サイズ(バイト数)を指定すると、この関数は読みやすい形式に丸めたサイズに、接尾辞(KiB、MiB など)を付けた文字列を返します。

この関数の逆操作にあたるのは、parseReadableSizeparseReadableSizeOrZero、および parseReadableSizeOrNull です。 この関数は任意の数値型を入力として受け取りますが、内部的にはそれらを Float64 にキャストします。非常に大きな値では、結果が最適でない可能性があります。

構文

formatReadableSize(x)

別名: FORMAT_BYTES

引数

  • x — バイト単位のサイズ。UInt64

戻り値

読みやすいように丸めたサイズに接尾辞を付けて、文字列として返します。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 │
└────────────────┴────────────┘

formatReadableTimeDelta

導入バージョン: v20.12

秒数で表された時間間隔(デルタ)を指定すると、この関数は年/月/日/時/分/秒/ミリ秒/マイクロ秒/ナノ秒単位を含む時間差を文字列として返します。

この関数は任意の数値型を入力として受け付けますが、内部的には Float64 にキャストします。非常に大きな値の場合、結果が十分に最適にならない可能性があります。

構文

formatReadableTimeDelta(column[, maximum_unit, minimum_unit])

引数

  • column — 数値の時間差を含むカラム。Float64
  • maximum_unit — 省略可能。表示する最大の単位。指定可能な値: nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, months, years。デフォルト値: yearsconst String
  • minimum_unit — 省略可能。表示する最小の単位。これより小さい単位は切り捨てられます。指定可能な値: nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, months, years。明示的に指定した値が maximum_unit より大きい場合は、例外がスローされます。デフォルト値: maximum_unitseconds 以上の単位の場合は seconds、それ以外の場合は nanosecondsconst String

返される値

時間差を文字列として返します。String

使用例

SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1分40秒                                        │
│      12345 │ 3時間25分45秒                             │
│  432546534 │ 13年8ヶ月17日7時間48分54秒│
└────────────┴────────────────────────────────────────────────────────────────┘

最大単位を使用

SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1分40秒                                                          │
│      12345 │ 205分45秒                                                        │
│  432546534 │ 7209108分54秒                                                    │
└────────────┴─────────────────────────────────────────────────────────────────┘

generateRandomStructure

導入バージョン: v23.5

column1_name column1_type, column2_name column2_type, ... という形式のランダムなテーブル構造を生成します。

構文

generateRandomStructure([number_of_columns, seed])

引数

  • number_of_columns — 生成されるテーブル構造における希望するカラム数。0 または Null に設定した場合、カラム数は 1 から 128 の範囲でランダムに決定されます。デフォルト値: NullUInt64
  • 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)
c1 Map(UInt256, UInt16)

指定したシード値で

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)))

generateSerialID

導入バージョン: v25.1

直前のカウンター値から連番を生成して返します。 この関数は、文字列引数(シリーズ識別子)と任意の開始値を取ります。 サーバーは 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 │
└───────────────────────────────┘

getClientHTTPHeader

導入バージョン: v24.5

HTTP ヘッダーの値を取得します。
そのようなヘッダーが存在しない場合、または現在のリクエストが HTTP インターフェイス経由で実行されていない場合、この関数は空文字列を返します。
特定の HTTP ヘッダー(例: AuthenticationX-ClickHouse-*)は制限されています。

注記
allow_get_client_http_header の設定が必須

この関数を使用するには、allow_get_client_http_header 設定を有効にする必要があります。
Cookie などの一部のヘッダーには機密情報が含まれる可能性があるため、この設定はデフォルトでは有効になっていません。

この関数では、HTTP ヘッダー名の大文字・小文字は区別されます。
関数が分散クエリのコンテキストで使用される場合、イニシエーターノード上でのみ空でない結果を返します。

構文

getClientHTTPHeader(name)

引数

  • name — HTTP ヘッダー名。String

戻り値

ヘッダーの値を返します。String

使用例

SELECT getClientHTTPHeader('Content-Type');
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘

getMacro

導入バージョン: v20.1

サーバーの設定ファイルで定義されたマクロの値を返します。 マクロは設定ファイルの <macros> セクションで定義され、ホスト名が複雑な場合でも、サーバーをわかりやすい名前で区別するために使用できます。 この関数を分散テーブルのコンテキストで実行した場合、各分片に対応する値を持つ通常のカラムを生成します。

構文

getMacro(name)

引数

戻り値

指定したマクロの値を返します。String

基本的な使い方

SELECT getMacro('test');
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘

getMaxTableNameLengthForDatabase

導入バージョン: v

指定したデータベースでサポートされるテーブル名の最大長を返します。

構文

getMaxTableNameLengthForDatabase(database_name)

引数

  • database_name — 指定されたデータベースの名前。String

返り値

テーブル名の最大長を Integer 型で返します。

使用例

典型的な例

SELECT getMaxTableNameLengthForDatabase('default');
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘

getMergeTreeSetting

導入バージョン: v25.6

現在の MergeTree 設定値を返します。

構文

getMergeTreeSetting(setting_name)

引数

  • setting_name — 設定名。String

戻り値

MergeTree の設定の現在値を返します。

使用例

SELECT getMergeTreeSetting('index_granularity');
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘

getOSKernelVersion

導入バージョン: v21.11

OS カーネルのバージョンを表す文字列を返します。

構文

getOSKernelVersion()

引数

  • なし。

戻り値

現在の OS カーネルバージョンを返します。String

使用例

SELECT getOSKernelVersion();
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘

getServerPort

導入バージョン: v21.10

指定されたプロトコルに対するサーバーのポート番号を返します。

構文

getServerPort(port_name)

引数

  • port_name — ポート名。String

戻り値

サーバーのポート番号を返します。UInt16

使用例

SELECT getServerPort('tcp_port');
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘

getServerSetting

導入バージョン: v25.6

サーバー設定名を指定して、その現在の値を返します。

構文

getServerSetting(setting_name')

引数

  • setting_name — サーバー設定の名前。String

戻り値

サーバー設定の現在の値を返します。Any

使用例

SELECT getServerSetting('allow_use_jemalloc_memory');
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘

getSetting

導入バージョン: v20.7

現在の設定値を返します。

構文

getSetting(setting_name)

引数

返される値

設定の現在の値を返します。Any

使用例

SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘

getSettingOrDefault

導入バージョン: v24.10

指定した設定の現在の値を返します。現在のプロファイルでその設定が設定されていない場合は、第 2 引数で指定されたデフォルト値を返します。

構文

getSettingOrDefault(setting_name, default_value)

引数

  • setting_name — 設定名。String
  • default_valuecustom_setting が設定されていない場合に返される値。値は任意のデータ型または Null を指定できます。

戻り値

指定された設定の現在の値、またはその設定が設定されていない場合は default_value を返します。

使用例

SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
my_value
100
NULL

getSizeOfEnumType

導入されたバージョン: v1.1

指定された Enum 型のフィールド数を返します。

構文

getSizeOfEnumType(x)

引数

  • x — 型 Enum の値。Enum

返される値

Enum 型の入力値を取るフィールド数を返します。UInt8/16

使用例

SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
┌─x─┐
│ 2 │
└───┘

getSubcolumn

導入バージョン: v

式または識別子と、サブカラム名を表す定数文字列を引数に取ります。

式から指定されたサブカラムを抽出して返します。

構文

引数

  • なし

返り値

getSubcolumn

SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')

getTypeSerializationStreams

導入バージョン: v22.6

データ型のシリアライズストリームのパスを列挙します。 この関数は開発用途での利用を想定しています。

構文

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}']

globalVariable

導入: v20.5

定数の文字列引数を受け取り、その名前を持つグローバル変数の値を返します。この関数は MySQL との互換性のために用意されており、通常の ClickHouse の運用上は必要なく、有用でもありません。ごく少数のダミーのグローバル変数のみが定義されています。

構文

globalVariable(name)

引数

  • name — グローバル変数の名前。String

戻り値

変数 name の値を返します。Any

globalVariable

SELECT globalVariable('max_allowed_packet')
67108864

hasColumnInTable

導入バージョン: v1.1

指定したカラムがデータベーステーブルに存在するかどうかをチェックします。 ネストされたデータ構造内の要素に対しては、そのカラムが存在するかどうかを関数がチェックします。 ネストされたデータ構造そのものに対しては、関数は 0 を返します。

構文

hasColumnInTable([hostname[, username[, password]],]database, table, column)

引数

  • database — データベース名。const String
  • table — テーブル名。const String
  • column — カラム名。const String
  • hostname — 省略可能。チェックを実行するリモートサーバー名。const String
  • username — 省略可能。リモートサーバーのユーザー名。const String
  • password — 省略可能。リモートサーバーのパスワード。const String

戻り値

指定したカラムが存在する場合は 1、それ以外の場合は 0 を返します。UInt8

既存のカラムをチェックする

SELECT hasColumnInTable('system','metrics','metric')
1

存在しないカラムを確認する

SELECT hasColumnInTable('system','metrics','non-existing_column')
0

hasThreadFuzzer

導入バージョン: v20.6

スレッドファザーが有効になっているかどうかを返します。 この関数はテストやデバッグの目的にのみ使用されます。

構文

hasThreadFuzzer()

引数

  • なし。

戻り値

Thread Fuzzer が有効かどうかを返します。UInt8

Thread Fuzzer のステータスを確認

SELECT hasThreadFuzzer()
┌─hasThreadFuzzer()─┐
│                 0 │
└───────────────────┘

hostName

導入バージョン: v20.5

この関数が実行されたホストの名前を返します。 関数がリモートサーバー(分散処理)上で実行される場合は、そのリモートサーバーの名前が返されます。 関数が分散テーブルのコンテキストで実行される場合、それぞれの分片に対応する値を持つ通常のカラムを生成します。 それ以外の場合は定数値を返します。

構文

hostName()

エイリアス: hostname

引数

  • なし。

戻り値

ホスト名を返します。String

使用例

SELECT hostName()
┌─hostName()─┐
│ clickhouse │
└────────────┘

icebergBucket

導入バージョン: v25.5

iceberg bucket transform の処理を実装します。

構文

icebergBucket(N, value)

引数

戻り値

入力値の 32 ビットハッシュを返します。Int32

使用例

SELECT icebergBucket(5, 1.0 :: Float32)
4

icebergTruncate

導入バージョン: v25.3

Apache Iceberg の truncate 変換ロジックを実装します: https://iceberg.apache.org/spec/#truncate-transform-details

構文

icebergTruncate(N, value)

引数

戻り値

引数と同じ型です

使用例

SELECT icebergTruncate(3, 'iceberg')
ice

identity

導入バージョン: v1.1

この関数は渡された引数をそのまま返します。デバッグやテストに有用です。索引の使用を回避して、フルスキャン時のパフォーマンスを確認することができます。クエリアナライザは、使用する索引を探す際に identity 関数内の内容を無視し、さらに定数畳み込みも無効化します。

Syntax

identity(x)

引数

  • x — 入力値。Any

戻り値

入力値をそのまま返します。Any

使用例

SELECT identity(42)
42

ignore

導入: v1.1

任意の引数を受け取り、常に 0 を返します。

構文

ignore(x)

引数

  • x — 構文エラーを回避するためだけに渡される、使用されない入力値。Any

戻り値

常に 0 を返します。UInt8

使用例

SELECT ignore(0, 'ClickHouse', NULL)
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘

indexHint

導入バージョン: v1.1

この関数はデバッグおよび内部動作の調査用途を想定しています。 引数を無視し、常に 1 を返します。 引数は評価されません。

ただしインデックス解析時には、この関数の引数は indexHint でラップされていないものとして扱われます。 これにより、対応する条件を用いてインデックス範囲でデータを選択しつつ、その条件によるそれ以上のフィルタリングを行わないようにできます。 ClickHouse におけるインデックスはスパースであり、indexHint を使用すると、同じ条件を直接指定した場合よりも多くのデータが返されます。

構文

indexHint(expression)

引数

  • expression — インデックス範囲選択のための任意の式。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 │
└────────────┴─────────┘

initialQueryID

導入バージョン: v1.1

現在実行中の初期クエリの ID を返します。 クエリの他のパラメータは、system.query_loginitial_query_id フィールドから取得できます。

queryID 関数とは異なり、initialQueryID は異なる分片間でも同じ結果を返します。

構文

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 │
└───────────────────┘

initialQueryStartTime

導入バージョン: v25.4

最初の(起点となる)現在のクエリの開始時刻を返します。 initialQueryStartTime は、分片が異なっても同じ結果を返します。

構文

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 │
└───────────────────┘

initializeAggregation

導入バージョン: v20.6

単一の値に基づいて集約関数の結果を計算します。 この関数は、コンビネータ -State を持つ集約関数を初期化するために使用できます。 集約関数の状態 (state) を作成して AggregateFunction 型のカラムに挿入したり、初期化された集約結果をデフォルト値として使用したりできます。

構文

initializeAggregation(aggregate_function, arg1[, arg2, ...])

引数

  • aggregate_function — 初期化する集約関数の名前。String
  • arg1[, arg2, ...] — 集約関数の引数。Any

返り値

関数に渡された各行に対する集約結果を返します。戻り値の型は、initializeAggregation が最初の引数として受け取る関数の戻り値の型と同じです。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) │
└────────────────────────────┴───────────────────────────────┘

isConstant

導入バージョン: v20.3

引数が定数式かどうかを返します。 定数式とは、クエリ解析の段階、すなわち実行前に結果がわかっている式です。 たとえば、リテラル を用いた式は定数式です。 この関数は主に開発、デバッグ、およびデモ用途を想定しています。

構文

isConstant(x)

引数

  • x — 判定対象の式。Any

戻り値

x が定数の場合は 1x が非定数の場合は 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() 関数の挙動

SELECT isConstant(now())
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘

isDecimalOverflow

導入バージョン: v20.8

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 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘

joinGet

導入バージョン: v18.16

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 — 必要なデータを含むテーブルのカラム名。const String
  • join_keys — join キーのリスト。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 │
└─────────────────────────────────────┘

配列を結合キーとして使用する

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                                  │
└────────────────────────────────────┘

joinGetOrNull

導入: v20.4

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 — JOIN キーのリストです。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 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘

lowCardinalityIndices

導入されたバージョン: v18.12

LowCardinality カラムの Dictionary 内での値の位置を返します。位置は 1 から始まります。LowCardinality カラムはパーツごとに Dictionary を持つため、この関数は同じ値であっても、異なるパーツでは異なる位置を返す場合があります。

構文

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 │
└────┴──────────────────────────┘

lowCardinalityKeys

導入: v18.12

LowCardinality カラムの辞書値を返します。 ブロックのサイズが辞書のサイズより小さいまたは大きい場合、結果は切り詰められるか、デフォルト値で拡張されます。 LowCardinality はパーツごとに辞書を持つため、この関数はパーツごとに異なる辞書値を返す場合があります。

構文

lowCardinalityKeys(col)

引数

戻り値

Dictionary のキーを返します。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 │                       │
└────┴───────────────────────┘

materialize

導入バージョン: v1.1

定数を、同一の値だけを含む通常のカラムへ変換します。 通常のカラムと定数は、メモリ上では異なる形式で表現されます。 関数は通常、通常の引数と定数引数に対して異なるコードを実行しますが、結果は通常同じになるはずです。 この関数は、この挙動をデバッグするために使用できます。

構文

materialize(x)

引数

  • x — 定数です。Any

戻り値

定数値を含むカラム全体を返します。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

minSampleSizeContinuous

導入バージョン: v23.10

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 要素からなる名前付き Tuple を返します: minimum_sample_size, detect_range_lower, detect_range_upper。それぞれ、必要なサンプルサイズ、返された必要サンプルサイズでは検出できない値の範囲の下限 (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)

minSampleSizeConversion

導入バージョン: v22.6

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 要素を持つ名前付き Tuple を返します: minimum_sample_size, detect_range_lower, detect_range_upper。これらはそれぞれ、必要なサンプルサイズ、このサンプルサイズでは検出できない値の範囲の下限(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)

neighbor

導入: v20.1

現在の行から指定したオフセットだけ離れた行のカラム値を返します。 この関数は、データブロックの物理的な順序に基づいて動作し、ユーザーが想定する論理的な順序と一致しない場合があるため、非推奨でありエラーを招きやすいものです。 代わりに適切なウィンドウ関数の利用を検討してください。

この関数は、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 │
└────────┴──────────────────────────┘

nested

導入バージョン: v

これは ClickHouse エンジン内部で使用される関数であり、直接使用することを想定していません。

複数の配列からタプルの配列を返します。

最初の引数は、結果の Tuple の要素名を決定する定数の文字列配列でなければなりません。 その他の引数は、同じサイズの配列でなければなりません。

構文

引数

  • なし。

戻り値

ネスト

SELECT nested(['keys', 'values'], ['key_1', 'key_2'], ['value_1','value_2'])

normalizeQuery

導入バージョン: v20.8

リテラル、連続したリテラル、そして複雑なエイリアス(空白を含むもの、2 桁を超える数字を含むもの、または UUID のように長さが少なくとも 36 バイトのもの)を、プレースホルダー ? に置き換えます。

構文

normalizeQuery(x)

引数

戻り値

指定された文字列をプレースホルダー付きで返します。String

使用例

SELECT normalizeQuery('[1, 2, 3, x]') AS query
┌─query────┐
│ [?.., x] │
└──────────┘

normalizeQueryKeepNames

導入バージョン: v21.2

リテラルおよび連続したリテラルの並びをプレースホルダー ? に置き換えますが、複雑なエイリアス(空白を含むもの、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                            │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘

normalizedQueryHash

導入バージョン: v20.8

類似したクエリに対して、リテラル値を無視して同一の 64 ビットハッシュ値を返します。 クエリログの分析に役立ちます。

構文

normalizedQueryHash(x)

引数

戻り値

64 ビットのハッシュ値を返します。UInt64

使用例

SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
┌─res─┐
│   1 │
└─────┘

normalizedQueryHashKeepNames

導入バージョン: v21.2

normalizedQueryHash と同様に、類似したクエリに対してリテラル値を除いた同一の 64 ビットのハッシュ値を返しますが、ハッシュ化の前に、複雑なエイリアス(空白を含むもの、2 桁を超える数字を含むもの、または 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 │
└──────────────────────────────┘

parseReadableSize

導入バージョン: v24.6

バイト数を表す文字列と、その単位として BKiBKBMiBMB など(すなわち ISO/IEC 80000-13 に準拠したバイト単位、または10進バイト単位)が与えられた場合、この関数は対応するバイト数を返します。 関数が入力値を解析できない場合は、例外をスローします。

この関数の逆変換を行う関数は formatReadableSizeformatReadableDecimalSize です。

構文

parseReadableSize(x)

引数

  • 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 │
└────────────────┴─────────┘

parseReadableSizeOrNull

導入バージョン: v24.6

BKiBKBMiBMB など(ISO/IEC 80000-13 に準拠した単位、または 10 進バイト単位)付きのバイトサイズを表す文字列を与えると、この関数は対応するバイト数を返します。 入力値を解析できない場合、この関数は NULL を返します。

この関数の逆演算は formatReadableSizeformatReadableDecimalSize です。

構文

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        │    ᴺᵁᴸᴸ │
└────────────────┴─────────┘

parseReadableSizeOrZero

導入バージョン: v24.6

バイト数を表す文字列と、その単位として BKiBKBMiBMB など(すなわち ISO/IEC 80000-13 由来の 2 進接頭辞または 10 進バイト単位)を受け取り、そのサイズに対応するバイト数を返します。 入力値を解析できない場合、この関数は 0 を返します。

この関数の逆変換に相当する操作は formatReadableSizeformatReadableDecimalSize です。

構文

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 │
└────────────────┴─────────┘

parseTimeDelta

導入バージョン: v22.7

数値の並びに、時間単位を表す文字列が続く形式をパースします。

時間差を表す文字列では、次の時間単位表記を使用できます:

  • 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

複数の時間単位は、区切り文字(スペース、;-+,:)で組み合わせることができます。

年と月の長さは近似です。年は 365 日、月は 30.5 日として扱います。

構文

parseTimeDelta(timestr)

引数

  • timestr — 数値の並びと、それに続く時間単位を表す文字列。String

戻り値

秒数。Float64

使用例

SELECT parseTimeDelta('11s+22min')
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘

複合時間単位

SELECT parseTimeDelta('1yr2mo')
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘

partitionId

導入バージョン: v21.4

パーティション 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             │
└───┴───┴────────────────┴───────────────┘

queryID

導入バージョン: v21.9

現在のクエリの ID を返します。 クエリのその他のパラメータは、system.query_log テーブルの query_id フィールドから取得できます。

initialQueryID 関数とは対照的に、queryID は分片ごとに異なる結果を返す場合があります。

構文

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 │
└───────────────────┘

revision

導入バージョン: v22.7

現在の ClickHouse サーバーのリビジョン番号を返します。

構文

revision()

引数

  • なし。

戻り値

現在の ClickHouse サーバーのリビジョンを返します。UInt32

使用例

SELECT revision()
┌─revision()─┐
│      54485 │
└────────────┘

rowNumberInAllBlocks

導入バージョン: v1.1

処理される各行に対して、一意の行番号を返します。

構文

rowNumberInAllBlocks()

引数

  • なし。

返される値

データブロック内の行の番号を、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 │
└────────────────────────┘

rowNumberInBlock

導入: v1.1

rowNumberInBlock によって処理される各ブロック内で、現在の行の番号を返します。

返される番号は、各ブロックごとに 0 から始まります。

構文

rowNumberInBlock()

引数

  • なし。

戻り値

データブロック内の行番号を 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 │
└────────────────────┘

runningAccumulate

導入バージョン: v1.1

データブロック内の各行について、集約関数の状態を累積します。

非推奨

状態は新しいデータブロックごとにリセットされます。 このようなエラーを招きやすい挙動のため、この関数は非推奨となっており、代わりにウィンドウ関数を使用することを推奨します。 この関数の使用を許可するには、allow_deprecated_error_prone_window_functions 設定を使用できます。

構文

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 │
└────────┴─────────────┴────────────────┘

runningConcurrency

導入バージョン: v21.3

同時に発生しているイベントの数を計算します。 各イベントは開始時刻と終了時刻を持ちます。 開始時刻はイベントに含まれますが、終了時刻は含まれません。 開始時刻と終了時刻を格納するカラムは、同じデータ型でなければなりません。 この関数は、各イベントの開始時刻ごとにアクティブ(同時に発生している)イベントの総数を計算します。

要件

イベントは開始時刻で昇順に並んでいる必要があります。 この要件が満たされない場合、関数は例外をスローします。 各データブロックは個別に処理されます。 異なるデータブロックに属するイベントが重なっている場合、それらは正しく処理できません。

廃止予定

代わりに window functions を使用することを推奨します。

構文

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 │
└────────────┴────────────────────────────────┘

runningDifference

導入バージョン: v1.1

データブロック内で、連続する2つの行の値の差分を計算します。 最初の行には 0 を返し、2行目以降には直前の行との差分を返します。

Deprecated

現在処理中のデータブロック内でのみ差分を返します。 このようなエラーを招きやすい動作のため、この関数は非推奨です。 代わりに window functions の使用が推奨されます。

この関数の使用を許可するには、設定 allow_deprecated_error_prone_window_functions を有効にします。

この関数の結果は、対象となるデータブロックおよびブロック内のデータの順序に依存します。 runningDifference() の計算時の行の順序は、ユーザーに返される行の順序と異なる場合があります。 これを防ぐには、ORDER BY を含むサブクエリを作成し、そのサブクエリの外側から関数を呼び出します。 ブロックサイズが結果に影響することに注意してください。 runningDifference の内部状態は、新しいブロックごとにリセットされます。

構文

runningDifference(x)

引数

  • 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

データブロック内の連続する行の値の差分を計算しますが、runningDifference と異なり、最初の行の値については 0 ではなく実際の値を返します。

非推奨

現在処理中のデータブロック内での差分のみを返します。 このようにエラーを招きやすい挙動であるため、この関数は非推奨です。 代わりに window functions の使用が推奨されます。

この関数の使用を許可するには、設定 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 │
└────────┴──────┘

serverUUID

導入バージョン: v20.1

サーバーが最初に起動されたときに生成される、ランダムな一意の UUID (v4) を返します。 この UUID は永続化されるため、2 回目、3 回目以降のサーバー起動でも同じ UUID が返されます。

構文

serverUUID()

引数

  • なし。

返り値

サーバーのランダムな UUID を返します。UUID

使用例

SELECT serverUUID();
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘

shardCount

導入: v21.9

分散クエリにおける分片の総数を返します。 クエリが分散されていない場合は、定数値 0 が返されます。

構文

shardCount()

引数

  • なし

返り値

分片の総数、または 0 を返します。UInt32

使用例

-- 上記のshardNum()の例を参照してください。shardCount()の使用例も含まれています
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 │
└──────────────┘

shardNum

導入バージョン: v21.9

分散クエリでデータの一部を処理する分片のインデックス(番号)を返します。 インデックスは 1 から始まります。 クエリが分散でない場合は、定数値 0 が返されます。

構文

shardNum()

引数

  • なし。

戻り値

分片の索引、または定数 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 │
└───────┴────────────┴──────────────┘

showCertificate

導入バージョン: v22.6

現在のサーバーで構成されている Secure Sockets Layer (SSL) 証明書に関する情報を表示します。 ClickHouse を OpenSSL 証明書を使用して接続を検証するように構成する方法については、Configuring SSL-TLS を参照してください。

構文

showCertificate()

引数

  • なし。

返り値

設定済み 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'}

sleep

導入バージョン: v1.1

指定した秒数だけクエリの実行を一時停止します。 この関数は主にテストおよびデバッグ目的で使用されます。

sleep() 関数は、クエリのパフォーマンスやシステムの応答性に悪影響を与える可能性があるため、本番環境での使用は通常推奨されません。 ただし、次のようなシナリオでは有用な場合があります。

  1. テスト: ClickHouse のテストやベンチマークを行う際に、遅延をシミュレートしたり一時停止を挿入して、特定の条件下でシステムがどのように動作するかを観察したい場合があります。
  2. デバッグ: ある時点でのシステムの状態やクエリ実行状況を確認する必要がある場合、sleep() を使用して一時停止を挿入し、その間に関連情報を調査または収集できます。
  3. シミュレーション: ネットワーク遅延や外部システム依存など、現実のシナリオで発生する遅延や一時停止をシミュレートしたい場合があります。
注記

sleep() 関数は、ClickHouse システム全体のパフォーマンスおよび応答性に影響を与える可能性があるため、必要な場合に限り慎重に使用することが重要です。

セキュリティ上の理由から、この関数はデフォルトのユーザープロファイル(allow_sleep が有効な状態)でのみ実行できます。

構文

sleep(seconds)

引数

  • seconds — クエリの実行を最大 3 秒間一時停止する時間(秒単位)。小数秒を指定するために浮動小数点値を使用できます。const UInt* または const Float*

戻り値

0 を返します。UInt8

使用例

-- このクエリは完了前に2秒間停止します。
-- この間、結果は返されず、クエリはハングまたは応答なしの状態に見えます。
SELECT sleep(2);
┌─sleep(2)─┐
│        0 │
└──────────┘
1行が返されました。経過時間: 2.012秒

sleepEachRow

導入バージョン: v1.1

結果セット内の各行に対して、指定された秒数だけクエリの実行を一時停止します。

sleepEachRow() 関数は、主に sleep() 関数と同様にテストおよびデバッグ目的で使用されます。 各行の処理に遅延をシミュレートしたり、一時停止を挿入したりできるため、次のようなシナリオで有用です:

  1. テスト: 特定の条件下での ClickHouse のパフォーマンスをテストまたはベンチマークする際に、sleepEachRow() を使用して処理される各行に対して遅延や一時停止をシミュレートできます。
  2. デバッグ: 処理される各行についてシステムの状態やクエリの実行状況を確認する必要がある場合、sleepEachRow() を使用して一時停止を挿入し、関連情報を検査または収集できるようにします。
  3. シミュレーション: 外部システムやネットワーク遅延を扱う場合のように、各行の処理ごとに遅延や一時停止が発生する実運用シナリオをシミュレートしたいケースがあります。
注記

sleep() 関数と同様に、sleepEachRow() は注意して、本当に必要な場合にのみ使用することが重要です。特に大きな結果セットを扱う場合、ClickHouse システム全体のパフォーマンスや応答性に大きな影響を与える可能性があります。

構文

sleepEachRow(seconds)

引数

  • seconds — 結果セット内の各行に対してクエリ実行を一時停止する秒数で、最大 3 秒まで指定できます。浮動小数点値を指定することで、秒未満の値も指定できます。const UInt* または const Float*

戻り値

各行に対して 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

導入バージョン: v

ClickHouse のテーブル構造を CapnProto 形式のスキーマに変換する関数

構文

引数

  • なし。

戻り値

random

SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}

structureToProtobufSchema

導入バージョン: v23.8

ClickHouse のテーブル構造を Protobuf 形式のスキーマに変換します。

この関数は、ClickHouse のテーブル構造の定義を受け取り、それを Protocol Buffers (Protobuf) の proto3 構文によるスキーマ定義に変換します。これは、データ交換のために 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;
}

tcpPort

導入バージョン: v20.12

サーバーが待ち受けている native interface の TCP ポート番号を返します。 分散テーブルのコンテキストで実行された場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。 それ以外の場合は、定数値を生成します。

構文

tcpPort()

引数

  • なし。

戻り値

TCP ポート番号を返します。UInt16

使用例

SELECT tcpPort()
┌─tcpPort()─┐
│      9000 │
└───────────┘

throwIf

導入バージョン: v1.1

引数 x が true の場合、例外をスローします。 error_code 引数を使用するには、設定パラメータ allow_custom_error_code_in_throw を有効にする必要があります。

構文

throwIf(x[, message[, error_code]])

引数

  • x — 検査する条件。Any
  • message — 省略可能。カスタムエラーメッセージ。const String
  • error_code — 省略可能。カスタムエラーコード。const Int8/16/32

戻り値

条件が偽の場合は 0 を返し、条件が真の場合は例外をスローします。UInt8

使用例

SELECT throwIf(number = 3, '多すぎます') FROM numbers(10);
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) サーバーから例外を受信しました (バージョン 19.14.1):
Code: 395. DB::Exception: localhost:9000 から受信しました。DB::Exception: 多すぎます。

toColumnTypeName

導入バージョン: v1.1

指定された値のデータ型の内部名を返します。 関数 toTypeName と異なり、返されるデータ型には ConstLowCardinality のような内部ラッパーカラムが含まれる可能性があります。

構文

toColumnTypeName(value)

引数

  • 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)                                             │
└───────────────────────────────────────────────────────────┘

toTypeName

導入: v1.1

引数として渡された値の型名を返します。 NULL が渡された場合、この関数は ClickHouse の内部的な NULL 表現に対応する型 Nullable(Nothing) を返します。

構文

toTypeName(x)

引数

  • x — 任意の型の値。Any

戻り値

入力値のデータ型名を返します。String

使用例

SELECT toTypeName(123)
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘

transactionID

導入バージョン: v22.6

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

トランザクションの ID を返します。

注記

この関数は実験的機能セットの一部です。 トランザクションの実験的サポートを有効にするには、設定ファイル に次の設定を追加します。

<clickhouse>
    <allow_experimental_transactions>1</allow_experimental_transactions>
</clickhouse>

詳細については、Transactional (ACID) support を参照してください。

構文

transactionID()

引数

  • なし。

戻り値

start_csnlocal_tidhost_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

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

読み取り可能なトランザクションの最新スナップショット(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

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

実行中のいずれかのトランザクションから参照可能な、最も古いスナップショット(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 │
└─────────────────────────────┘

transform

導入バージョン: v1.1

明示的に定義された「ある要素から別の要素への」マッピングに従って、値を変換します。

この関数には 2 つのバリエーションがあります:

  • transform(x, array_from, array_to, default) - x をマッピング用配列に基づいて変換し、一致しない要素には default 値を使用します
  • transform(x, array_from, array_to) - 同じ変換を行いますが、一致が見つからない場合は元の x を返します

関数は array_from 内で x を検索し、同じインデックス位置にある array_to の要素を返します。 xarray_from に存在しない場合、4 パラメータ版では default 値を返し、3 パラメータ版では元の x を返します。 array_from に複数の一致する要素が存在する場合、最初に一致した要素に対応する値を返します。

要件:

  • array_fromarray_to は同じ要素数でなければなりません
  • 4 パラメータ版: transform(T, Array(T), Array(U), U) -> U ここで TU は互換性のある異なる型でかまいません
  • 3 パラメータ版: transform(T, Array(T), Array(T)) -> T ここではすべての型が同じでなければなりません

構文

transform(x, array_from, array_to[, default])

引数

戻り値

xarray_from の要素と一致する場合は array_to から対応する値を返し、一致しない場合は default が指定されていれば default を、指定されていなければ x を返します。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 │
└────────────────┴─────────┘

uniqThetaIntersect

導入バージョン: v22.9

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 │
└───────────────┴───────────────┴───────────────┘

uniqThetaNot

導入バージョン: v22.9

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 │
└─────────┴───────────────┴───────────────┘

uniqThetaUnion

導入バージョン: v22.9

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 │
└───────────┴───────────────┴───────────────┘

uptime

導入: v1.1

サーバーの稼働時間を秒単位で返します。 分散テーブル上で実行した場合、この関数は各分片ごとに対応する値を持つ通常のカラムを生成します。 それ以外の場合は定数値を返します。

構文

uptime()

引数

  • なし。

戻り値

サーバーの稼働時間を秒単位で返します。 UInt32

使用例

SELECT uptime() AS Uptime
┌─Uptime─┐
│  55867 │
└────────┘

variantElement

導入バージョン: v25.2

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]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘

variantType

導入バージョン: v24.2

Variant 型カラムの各行に対して、対応するバリアント型名を返します。行に NULL が含まれている場合、その行には 'None' を返します。

構文

variantType(variant)

引数

  • variant — Variant 型のカラム。Variant

返される値

各行の 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)  │
└────────────────┘

version

導入バージョン: v1.1

major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release の形式で、現在の ClickHouse のバージョンを文字列として返します。 分散テーブルのコンテキストで実行する場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。 それ以外の場合は、定数値を返します。

構文

version()

引数

  • なし。

戻り値

現在のClickHouseのバージョンを返します。String

使用例

SELECT version()
┌─version()─┐
│ 24.2.1.1  │
└───────────┘

visibleWidth

導入: v1.1

値をテキスト形式(タブ区切り)でコンソールに出力する際の、おおよその表示幅を計算します。 この関数は、Pretty 形式の実装にシステム側で使用されます。 NULL は、Pretty 形式における NULL に対応する文字列として表現されます。

構文

visibleWidth(x)

引数

  • x — 任意のデータ型の値。Any

戻り値

値をテキスト形式で表示したときのおおよその表示幅を返します。UInt64

NULL の表示幅を計算する

SELECT visibleWidth(NULL)
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘

zookeeperSessionUptime

導入: v21.11

現在の ZooKeeper セッションの稼働時間を秒単位で返します。

構文

zookeeperSessionUptime()

引数

  • なし。

戻り値

現在の ZooKeeper セッションの稼働時間を秒単位で返します。戻り値の型は UInt32 です。

使用例

SELECT zookeeperSessionUptime();
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘