メインコンテンツへスキップ
DataStore では、ドメイン固有の操作に対応する 7 つのアクセサ名前空間で、185 以上のメソッドを利用できます。
アクセサメソッド説明
.str56文字列操作
.dt42+DateTime 操作
.arr37Array 操作 (ClickHouse 固有)
.json13JSON のパース (ClickHouse 固有)
.url15URL のパース (ClickHouse 固有)
.ip9IP アドレス操作 (ClickHouse 固有)
.geo14Geo/距離の操作 (ClickHouse 固有)

String アクセサ (.str)

pandas の .str メソッド全 56 種類に加え、ClickHouse の文字列関数にも対応しています。

大文字・小文字の変換

MethodClickHouseDescription
upper()upper()大文字に変換
lower()lower()小文字に変換
capitalize()initcap()先頭文字を大文字化
title()initcap()タイトルケースに変換
swapcase()-大文字・小文字を反転
casefold()lower()大文字・小文字を折りたたむ
ds['name_upper'] = ds['name'].str.upper()
ds['name_title'] = ds['name'].str.title()

長さとサイズ

MethodClickHouseDescription
len()length()文字列の長さ (バイト数)
char_length()char_length()文字数
ds['name_len'] = ds['name'].str.len()

部分文字列とスライス

メソッドClickHouse説明
slice(start, stop)substring()部分文字列を抽出
slice_replace()-スライスを置換
left(n)left()左端から n 文字
right(n)right()右端から n 文字
get(i)-指定した位置の文字
ds['first_3'] = ds['name'].str.slice(0, 3)
ds['last_4'] = ds['name'].str.right(4)

トリミング

メソッドClickHouse説明
strip()trim()空白文字を削除
lstrip()trimLeft()先頭の空白文字を削除
rstrip()trimRight()末尾の空白文字を削除
ds['trimmed'] = ds['text'].str.strip()
MethodClickHouse説明
contains(pat)position()部分文字列を含む
startswith(pat)startsWith()プレフィックスで始まる
endswith(pat)endsWith()接尾辞で終わる
find(sub)position()位置を検索
rfind(sub)-末尾側から検索
index(sub)position()検索し、見つからなければエラー
rindex(sub)-末尾側から検索し、見つからなければエラー
match(pat)match()正規表現に一致
fullmatch(pat)-文字列全体が正規表現に一致
count(pat)-出現回数を数える
# 部分文字列を含むか確認
ds['has_john'] = ds['name'].str.contains('John')

# 正規表現マッチ
ds['valid_email'] = ds['email'].str.match(r'^[\w.-]+@[\w.-]+\.\w+$')

置換

メソッドClickHouse説明
replace(pat, repl)replace()一致箇所を置換
replace(pat, repl, regex=True)replaceRegexpAll()正規表現で置換
removeprefix(prefix)-プレフィックスを削除
removesuffix(suffix)-接尾辞を削除
translate(table)-文字を変換
ds['cleaned'] = ds['text'].str.replace('\n', ' ')
ds['digits_only'] = ds['phone'].str.replace(r'\D', '', regex=True)

分割

MethodClickHouseDescription
split(sep)splitByString()Arrayに分割
rsplit(sep)-右から分割
partition(sep)-3つに分割
rpartition(sep)-右から3つに分割
ds['parts'] = ds['path'].str.split('/')

パディング

MethodClickHouseDescription
pad(width)leftPad()左埋め
ljust(width)rightPad()右寄せ
rjust(width)leftPad()左寄せ
center(width)-中央寄せ
zfill(width)leftPad(..., '0')ゼロ埋め
ds['padded_id'] = ds['id'].astype(str).str.zfill(6)

文字種のテスト

メソッド説明
isalpha()すべて英字
isdigit()すべて数字
isalnum()英数字
isspace()すべて空白文字
isupper()すべて大文字
islower()すべて小文字
istitle()タイトルケース
isnumeric()数値文字
isdecimal()10進数字文字
ds['is_numeric'] = ds['code'].str.isdigit()

その他

メソッド説明
repeat(n)n 回繰り返す
reverse()文字列を反転する
wrap(width)テキストを折り返す
encode(enc)エンコードする
decode(enc)デコードする
normalize(form)Unicode 正規化を行う
extract(pat)正規表現のグループを抽出する
extractall(pat)一致したものをすべて抽出する
cat(sep)すべてを連結する
get_dummies(sep)ダミー変数に変換する

DateTime アクセサ (.dt)

pandas の .dt メソッド (42 種類以上) に加え、ClickHouse の datetime 関数もすべて利用できます。

日付の部分

プロパティClickHouse説明
yeartoYear()
monthtoMonth()月 (1-12)
daytoDayOfMonth()日 (1-31)
hourtoHour()時 (0-23)
minutetoMinute()分 (0-59)
secondtoSecond()秒 (0-59)
millisecondtoMillisecond()ミリ秒
microsecondtoMicrosecond()マイクロ秒
quartertoQuarter()四半期 (1-4)
dayofweektoDayOfWeek()曜日 (0=月)
dayofyeartoDayOfYear()年内通算日
weektoWeek()週番号
days_in_month-月の日数
ds['year'] = ds['date'].dt.year
ds['month'] = ds['date'].dt.month
ds['day_of_week'] = ds['date'].dt.dayofweek

切り捨て

MethodClickHouse説明
to_start_of_day()toStartOfDay()日の始まり
to_start_of_week()toStartOfWeek()週の始まり
to_start_of_month()toStartOfMonth()月の始まり
to_start_of_quarter()toStartOfQuarter()四半期の始まり
to_start_of_year()toStartOfYear()年の始まり
to_start_of_hour()toStartOfHour()時間の始まり
to_start_of_minute()toStartOfMinute()分の始まり
ds['month_start'] = ds['date'].dt.to_start_of_month()

算術演算

MethodClickHouseDescription
add_years(n)addYears()年を加算
add_months(n)addMonths()月を加算
add_weeks(n)addWeeks()週を加算
add_days(n)addDays()日を加算
add_hours(n)addHours()時間を加算
add_minutes(n)addMinutes()分を加算
add_seconds(n)addSeconds()秒を加算
subtract_years(n)subtractYears()年を減算
subtract_months(n)subtractMonths()月を減算
subtract_days(n)subtractDays()日を減算
ds['next_month'] = ds['date'].dt.add_months(1)
ds['last_week'] = ds['date'].dt.subtract_weeks(1)

真偽値判定

メソッド説明
is_month_start()月の初日
is_month_end()月の末日
is_quarter_start()四半期の初日
is_quarter_end()四半期の末日
is_year_start()年の初日
is_year_end()年の末日
is_leap_year()うるう年
ds['is_eom'] = ds['date'].dt.is_month_end()

フォーマット

メソッドClickHouse説明
strftime(fmt)formatDateTime()文字列形式でフォーマット
day_name()-曜日名
month_name()-月名
ds['date_str'] = ds['date'].dt.strftime('%Y-%m-%d')
ds['day_name'] = ds['date'].dt.day_name()

タイムゾーン

メソッドClickHouse説明
tz_convert(tz)toTimezone()タイムゾーンを変換
tz_localize(tz)-タイムゾーンを付与
ds['utc_time'] = ds['timestamp'].dt.tz_convert('UTC')

Array アクセサ (.arr)

ClickHouse 固有の配列操作 (37 個のメソッド) 。

プロパティ

プロパティClickHouse説明
lengthlength()Arrayの長さ
sizelength()lengthの別名
emptyempty()空であるか
not_emptynotEmpty()空でないか
ds['tag_count'] = ds['tags'].arr.length
ds['has_tags'] = ds['tags'].arr.not_empty

要素アクセス

MethodClickHouseDescription
array_first()arrayElement(..., 1)最初の要素
array_last()arrayElement(..., -1)最後の要素
array_element(n)arrayElement()N番目の要素
array_slice(off, len)arraySlice()配列のスライス
ds['first_tag'] = ds['tags'].arr.array_first()
ds['last_tag'] = ds['tags'].arr.array_last()

集計

メソッドClickHouse説明
array_sum()arraySum()要素の合計
array_avg()arrayAvg()平均
array_min()arrayMin()最小値
array_max()arrayMax()最大値
array_product()arrayProduct()要素の積
array_uniq()arrayUniq()一意な値の数
ds['total'] = ds['values'].arr.array_sum()
ds['average'] = ds['values'].arr.array_avg()

変換

MethodClickHouse説明
array_sort()arraySort()昇順でソート
array_reverse_sort()arrayReverseSort()降順でソート
array_reverse()arrayReverse()順序を逆にする
array_distinct()arrayDistinct()要素を一意化
array_compact()arrayCompact()連続する重複を削除
array_flatten()arrayFlatten()ネストを平坦化
ds['sorted_tags'] = ds['tags'].arr.array_sort()
ds['unique_tags'] = ds['tags'].arr.array_distinct()

変更

メソッドClickHouse説明
array_push_back(elem)arrayPushBack()末尾に追加
array_push_front(elem)arrayPushFront()先頭に追加
array_pop_back()arrayPopBack()末尾を削除
array_pop_front()arrayPopFront()先頭を削除
array_concat(other)arrayConcat()連結
メソッドClickHouse説明
has(elem)has()要素を含む
index_of(elem)indexOf()位置を取得
count_equal(elem)countEqual()出現回数を数える
ds['has_python'] = ds['skills'].arr.has('Python')

文字列操作

メソッドClickHouse説明
array_string_concat(sep)arrayStringConcat()文字列として連結
ds['tags_str'] = ds['tags'].arr.array_string_concat(', ')

JSON アクセサ (.json)

ClickHouse 固有の JSON パース (13 個のメソッド) 。
MethodClickHouseDescription
get_string(path)JSONExtractString()文字列を抽出
get_int(path)JSONExtractInt()整数を抽出
get_float(path)JSONExtractFloat()浮動小数点数を抽出
get_bool(path)JSONExtractBool()真偽値を抽出
get_raw(path)JSONExtractRaw()生の JSON を抽出
get_keys()JSONExtractKeys()キーを取得
get_type(path)JSONType()型を取得
get_length(path)JSONLength()長さを取得
has_key(key)JSONHas()キーの存在を確認
is_valid()isValidJSON()JSON が有効か検証
to_json_string()toJSONString()JSON 文字列に変換
# JSONカラムをパースする
ds['user_name'] = ds['json_data'].json.get_string('user.name')
ds['user_age'] = ds['json_data'].json.get_int('user.age')
ds['is_active'] = ds['json_data'].json.get_bool('user.active')
ds['has_email'] = ds['json_data'].json.has_key('user.email')

URL アクセサ (.url)

ClickHouse 固有の URL パース用メソッド (15 個) 。
メソッドClickHouse説明
domain()domain()ドメインを抽出
domain_without_www()domainWithoutWWW()www を除いたドメイン
top_level_domain()topLevelDomain()TLD
protocol()protocol()プロトコル (http/https)
path()path()URL パス
path_full()pathFull()クエリ文字列を含むパス
query_string()queryString()クエリ文字列
fragment()fragment()フラグメント (#…)
port()port()ポート番号
extract_url_parameter(name)extractURLParameter()クエリパラメータを取得
extract_url_parameters()extractURLParameters()すべてのパラメータ
cut_url_parameter(name)cutURLParameter()パラメータを削除
decode_url_component()decodeURLComponent()URL デコード
encode_url_component()encodeURLComponent()URL エンコード
# URLを解析
ds['domain'] = ds['url'].url.domain()
ds['path'] = ds['url'].url.path()
ds['utm_source'] = ds['url'].url.extract_url_parameter('utm_source')

IP アクセサ (.ip)

ClickHouse固有の IP アドレス操作 (9 個のメソッド) 。
MethodClickHouseDescription
to_ipv4()toIPv4()IPv4 に変換
to_ipv6()toIPv6()IPv6 に変換
ipv4_num_to_string()IPv4NumToString()数値を文字列に変換
ipv4_string_to_num()IPv4StringToNum()文字列を数値に変換
ipv6_num_to_string()IPv6NumToString()IPv6 の数値を文字列に変換
ipv4_to_ipv6()IPv4ToIPv6()IPv6 に変換
is_ipv4_string()isIPv4String()IPv4 形式か検証
is_ipv6_string()isIPv6String()IPv6 形式か検証
ipv4_cidr_to_range(cidr)IPv4CIDRToRange()CIDR を範囲に変換
# IP関連の操作
ds['is_valid_ip'] = ds['ip'].ip.is_ipv4_string()
ds['ip_num'] = ds['ip'].ip.ipv4_string_to_num()

Geo アクセサ (.geo)

ClickHouse固有のGeo/距離関連の操作 (14メソッド) 。

距離関数

メソッドClickHouse説明
great_circle_distance(...)greatCircleDistance()大円距離
geo_distance(...)geoDistance()WGS-84での距離
l1_distance(v1, v2)L1Distance()マンハッタン距離
l2_distance(v1, v2)L2Distance()ユークリッド距離
l2_squared_distance(v1, v2)L2SquaredDistance()ユークリッド距離の二乗
linf_distance(v1, v2)LinfDistance()チェビシェフ距離
cosine_distance(v1, v2)cosineDistance()コサイン距離

ベクトル演算

メソッドClickHouse説明
dot_product(v1, v2)dotProduct()内積
l2_norm(vec)L2Norm()ベクトルのノルム
l2_normalize(vec)L2Normalize()正規化

H3 関数

メソッドClickHouse説明
geo_to_h3(lon, lat, res)geoToH3()Geo を H3 index に変換
h3_to_geo(h3)h3ToGeo()H3 を Geo 座標に変換

Point 演算

MethodClickHouse説明
point_in_polygon(pt, poly)pointInPolygon()Polygon 内の点
point_in_ellipses(...)pointInEllipses()楕円内の点
from chdb.datastore import F

# 距離を計算する
ds['distance'] = F.great_circle_distance(
    ds['lon1'], ds['lat1'],
    ds['lon2'], ds['lat2']
)

# ベクトル類似度
ds['similarity'] = F.cosine_distance(ds['embedding1'], ds['embedding2'])

アクセサの使用

遅延評価

ほとんどのアクセサメソッドは遅延評価されるため、後で評価される式を返します:
# これらはすべて遅延評価される
ds['name_upper'] = ds['name'].str.upper()  # まだ実行されない
ds['year'] = ds['date'].dt.year            # まだ実行されない
ds['domain'] = ds['url'].url.domain()      # まだ実行されない

# 結果にアクセスした時点で実行される
df = ds.to_df()  # ここですべてが実行される

直ちに実行されるメソッド

構造が変わるため、すぐに実行される .str メソッドがあります:
メソッド戻り値理由
partition(sep)DataStore (3 カラム)複数のカラムを作成するため
rpartition(sep)DataStore (3 カラム)複数のカラムを作成するため
get_dummies(sep)DataStore (N カラム)カラム数が動的に決まるため
extractall(pat)DataStoreMultiIndex の結果になるため
cat(sep)str集約 (N 行 → 1)

アクセサのチェーン

アクセサメソッドはチェーンできます。
ds['clean_name'] = (ds['name']
    .str.strip()
    .str.lower()
    .str.replace(' ', '_')
)

ds['next_month_start'] = (ds['date']
    .dt.add_months(1)
    .dt.to_start_of_month()
)
最終更新日 2026年6月10日