ClickHouse SQL Reference ( bốn ) số liệu loại hình

Tuple(T1, T2,…)

Nguyên tố nguyên tổ,Mỗi cái nguyên tố đều có một cái đơn độc loại hình. Nguyên tổ cần thiết ít nhất bao hàm một cái nguyên tố.

Nguyên tổ dùng cho lâm thời liệt phân tổ. Ở tuần tra trung sử dụngINBiểu đạt thức khi, cùng với chỉ định lambda hàm số nào đó hình thức tham số khi, có thể đối liệt tiến hành phân tổ.Có quan hệ càng nhiều tin tức, thỉnh xem thêmIN thao tác phùCùngCao giai hàm sốBộ phận.

Nguyên tổ có thể là tuần tra kết quả.Dưới tình huống như vậy, đối với JSON bên ngoài văn bản cách thức, giá trị ở dấu móc trung lấy dấu phẩy phân cách. Ở JSON cách thức trung, nguyên tổ làm số tổ phát ra ( ở dấu móc trung ).

FixedString(N)

Cố định chiều dàiNByte tự phù xuyến ( vừa không là tự phù cũng không phải mã điểm ).

Muốn thanh minhFixedStringLoại hình liệt, thỉnh sử dụng dưới ngữ pháp:

<column_name>FixedString(N)

Map(key, value)

Map(key, value)Số liệu loại hình tồn trữkey:valueKiện giá trị đối.

Date

Tự 1970-01-01 tới nay số trời tồn trữ ở hai chữ tiết trung (unsigned). Cho phép ở Unix thời đại bắt đầu sau đem giá trị tồn trữ đến biên dịch giai đoạn đại lượng không đổi ( trước mắt, đây là ở 2149 năm phía trước, nhưng cuối cùng hoàn toàn duy trì niên đại vì 2148).

Duy trì lấy giá trị phạm vi:[1970-01-01,2149-06-06].

Tồn trữ ngày giá trị khi không mang theo múi giờ.

Date32

Một cái ngày. Duy trì cùngDateTime64Tương đồng ngày phạm vi.Lấy bổn cơ byte trình tự tồn trữ vì có ký hiệu 32 vị số nguyên, này giá trị tỏ vẻ tự 1970-01-01 tới nay số trời(0 tỏ vẻ 1970-01-01, giá trị âm tỏ vẻ 1970 năm phía trước số trời ).

DateTime

Cho phép tồn trữ nháy mắt thời gian, có thể tỏ vẻ vì lịch ngày ngày cùng một ngày thời gian.

DateTime([timezone])

Duy trì lấy giá trị phạm vi:[1970-01-01 00:00:00,2106-02-07 06:28:15].

Độ chặt chẽ:1 giây.

Sử dụng trích yếu

Thời gian điểm bị bảo tồn vìUnix thời gian chọc,Cùng múi giờ hoặc mùa hạ khi không quan hệ.Múi giờ ảnh hưởngDateTimeLoại hình giá trị như thế nào lấy văn bản cách thức biểu hiện, cùng với như thế nào phân tích chỉ định vì tự phù xuyến giá trị (’ 2020-01-01 05:00:01 ').

Cùng múi giờ không quan hệ Unix thời gian chọc tồn trữ ở biểu trung, múi giờ dùng cho ở số liệu dẫn vào / đạo ra trong lúc đem này thay đổi vì văn bản cách thức hoặc phản hồi văn bản cách thức, hoặc là dùng cho đối giá trị tiến hành lịch ngày tính toán ( tỷ như:toDate,toHourHàm số chờ ).Múi giờ không tồn trữ ở biểu hành trung ( hoặc kết quả tập trung ), mà là tồn trữ ở liệt nguyên số liệu trung.

Duy trì múi giờ danh sách có thể ởIANA múi giờ cơ sở dữ liệuTrung tìm được, cũng có thể thông quaSELECT * FROM system.time_zonesTuần tra.Này phân danh sáchCũng có thể ở duy cơ bách khoa thượng tìm được.

Ở sáng tạo biểu khi, có thể hiện thức mà vìDateTimeLoại hình liệt thiết trí múi giờ.Tỷ như:DateTime('UTC').Nếu không có thiết trí múi giờ, ClickHouse đem sử dụng server thiết trí hoặc ClickHouse server khởi động khi thao tác hệ thống thiết trí trungMúi giờTham số giá trị.

Nếu ở khởi động lại số liệu loại hình khi không có hiện thức thiết trí múi giờ, tắcclickhouse-clientCam chịu ứng dụng server múi giờ. Muốn sử dụng bản cài đặt múi giờ, thỉnh sử dụng--use_client_time_zoneTham số vận hànhclickhouse-client.

ClickHouse căn cứdate_time_output_formatThiết trí giá trị phát ra giá trị. Cam chịu vìYYYY-MM-DD hh:mm:ssVăn bản cách thức. Ngoài ra, còn có thể sử dụngformatDateTimeHàm số sửa đổi phát ra.

Ở hướng ClickHouse cắm vào số liệu khi, có thể căn cứdate_time_input_formatThiết trí giá trị, sử dụng bất đồng cách thức ngày cùng thời gian tự phù xuyến.

DateTime64

Cho phép tồn trữ thời gian thượng nháy mắt, có thể tỏ vẻ vì lịch ngày ngày cùng một ngày thời gian, có định nghĩa á giây độ chặt chẽ

Độ chặt chẽ lớn nhỏ (precision):10^-precision độ chặt chẽ giây. Lấy giá trị phạm vi:[0,9].Thông thường sử dụng -3( hào giây ),6( hơi giây ),9( nạp giây ).

DateTime64(precision,[timezone])

Ở nội bộ, đem số liệu tồn trữ vì tự epoch start (1970-01-01 00:00:00 UTC) tới nay một ít ’ ticks ' làm Int64.Khắc độ độ phân giải từ precision tham số quyết định. Ngoài ra,DateTime64Loại hình có thể tồn trữ toàn bộ liệt tương đồng múi giờ, này sẽ ảnh hưởngDateTime64Loại hình giá trị như thế nào lấy văn bản cách thức biểu hiện, cùng với như thế nào phân tích chỉ định vì tự phù xuyến giá trị (’ 2020-01-01 05:00:01.000 '). Múi giờ không tồn trữ ở biểu hành trung ( hoặc kết quả tập trung ), mà là tồn trữ ở liệt nguyên số liệu trung. Cụ thể thỉnh tham kiếnDateTime.

Duy trì lấy giá trị phạm vi:[1900-01-01 00:00:00,2299-12-31 23:59:59.99999999]

Chú: Cực đại độ chặt chẽ vì8.Nếu sử dụng 9 vị ( nạp giây ) lớn nhất độ chặt chẽ, tắc duy trì cực đại vì UTC thời gian222-04-11 23:47:16.

Enum

Từ mệnh danh giá trị (named values) tạo thành cái cử loại hình.

Mệnh danh giá trị có thể thanh minh vì'string' = integerĐối hoặc'string'Tên.ClickHouse cận tồn trữ con số, nhưng duy trì thông qua tên đối giá trị tiến hành thao tác.

ClickHouse duy trì:

  • 8 bitEnum.Nhiều nhất có thể bao hàm 256 cái[- 128,127]Trong phạm vi cái cử giá trị.
  • 16-bitEnum.Nó nhiều nhất có thể bao hàm 65536 cái ở[-32768,32767]Trong phạm vi cái cử giá trị.

ClickHouse ở cắm vào số liệu khi tự động lựa chọnEnumLoại hình. Ngài còn có thể sử dụngEnum8HoặcEnum16Loại hình tới xác định tồn trữ lớn nhỏ.

Dùng lệ

Phía dưới chúng ta sáng tạo một cái liệt loại hình vìEnum8('hello' = 1, 'world' = 2)Biểu:

CREATETABLEt_enum
(
xEnum('hello'=1,'world'=2)
)
ENGINE=TinyLog

Cùng loại mà,Ngài có thể tỉnh lược con số.ClickHouse đem tự động phân phối liên tục con số.Cam chịu từ1Bắt đầu phân phối dãy số.

CREATETABLEt_enum
(
xEnum('hello','world')
)
ENGINE=TinyLog

Ngài còn có thể vì danh tự chỉ định hợp pháp lúc đầu đánh số.

CREATETABLEt_enum
(
xEnum('hello'=1,'world')
)
ENGINE=TinyLog

CREATETABLEt_enum
(
`x`Enum8('hello'=-129,'world')
)
ENGINE=TinyLog

Query id: d68d56f5-1aa9-4d5b-8b34-a9dfef6b84a6


Elapsed:0.287sec.

Received exceptionfromserver(version24.2.1):
Code:69.DB::Exception: Receivedfromlocalhost:9000.DB::Exception:Value-129forelement'hello'exceeds rangeofEnum8.(ARGUMENT_OUT_OF_BOUND)

LiệtxChỉ có thể tồn trữ loại hình định nghĩa trung liệt ra giá trị:'hello'Hoặc'world'.Nếu ngài nếm thử bảo tồn bất luận cái gì mặt khác giá trị, ClickHouse đem dẫn phát dị thường.Tự động lựa chọn này Enum 8 vị lớn nhỏ.

INSERTINTOt_enumVALUES('hello'),('world'),('hello')
INSERTINTOt_enum FORMATValues

Query id: b73e8f46-02e5-4196-832f-17f5353eecfe

Ok.
Exceptiononclient:
Code:691.DB::Exception: Unknown element'a'forenum:whileexecuting'FUNCTION if(isNull(_dummy_0): 3, defaultValueOfTypeName('Enum8(\'hello\'=1,\'world\'=2)'):: 2, _CAST(_dummy_0, 'Enum8(\'hello\'=1,\'world\'=2)'):: 4) -> if(isNull(_dummy_0), defaultValueOfTypeName('Enum8(\'hello\'=1,\'world\'=2)'), _CAST(_dummy_0, 'Enum8(\'hello\'=1,\'world\'=2)')) Enum8('hello' = 1, 'world' = 2): 1':Whileexecuting ValuesBlockInputFormat:dataforINSERTwas parsedfromquery.(UNKNOWN_ELEMENT_OF_ENUM)

Đương từ biểu trung tuần tra số liệu khi, ClickHouse từEnumTrung phát ra tự phù xuyến giá trị.

SELECT*FROMt_enum

在这里插入图片描述
Nếu yêu cầu nhìn đến hành đối ứng con số, tắc cần thiết đemEnumGiá trị cưỡng chế thay đổi vì số nguyên loại hình.

SELECTCAST(x,'Int8')FROMt_enum

在这里插入图片描述
Muốn ở tuần tra trung sáng tạo Enum giá trị, còn cần sử dụngCAST.

SELECTtoTypeName(CAST('a','Enum(\'a\' = 1, \'b\' = 2)'))

Giống nhau quy tắc cập cách dùng

Mỗi cái giá trị bị phân phối một cái phạm vi ở-128…127Dùng choEnum8Hoặc ở-32768…32767Dùng choEnum16.SởCó tự phù xuyến cùng con số cần thiết là bất đồng. Cho phép sử dụng không tự phù xuyến.Nếu chỉ định loại này loại hình ( ở biểu định nghĩa trung ), tắc con số có thể ấn tùy ý trình tự sắp hàng. Nhưng mà, trình tự cũng không quan trọng.

Enum trung tự phù xuyến cùng con số giá trị đều không thể vìNULL.

Enum có thể bao hàm vìNullableLoại hình. Bởi vậy, nếu sử dụng tuần tra sáng tạo một cái biểu

CREATETABLEt_enum_nullable
(
x Nullable(Enum8('hello'=1,'world'=2))
)
ENGINE=TinyLog

Không những có thể tồn trữ'hello'Cùng'world',Còn có thể tồn trữNULL.

INSERTINTOt_enum_nullableValues('hello'),('world'),(NULL)

Ở RAM trung,EnumLiệt tồn trữ phương thức cùng đối ứng trị sốInt8HoặcInt16Tương đồng.

Lúc này lấy văn bản hình thức đọc lấy khi, ClickHouse đem giá trị phân tích vì tự phù xuyến, cũng từ Enum giá trị tập hợp trung tìm tòi tương ứng tự phù xuyến.Nếu không có tìm được, tắc tung ra dị thường. Lúc này lấy văn bản cách thức đọc lấy khi, đem đọc lấy tự phù xuyến cũng tra tìm tương ứng trị số. Nếu không có tìm được, đem tung ra dị thường. Lúc này lấy văn bản hình thức viết hợp thời, nó đem giá trị viết nhập tương ứng tự phù xuyến. Nếu liệt số liệu bao hàm rác rưởi ( không phải đến từ hữu hiệu tập hợp con số ), tắc tung ra dị thường.Lúc này lấy cơ số hai hình thức đọc viết khi, nó công tác phương thức cùng Int8 cùng Int16 số liệu loại hình tương đồng. Ẩn thức cam chịu giá trị là con số nhỏ nhất giá trị.

ORDER BY,GROUP BY,IN,DISTINCTChờ thao tác trong lúc, Enum hành vi cùng tương ứng con số tương đồng.Tỷ như,ORDER BYẤn con số bài tự.Bằng nhau cùng tương đối thao tác phù ở enum thượng công tác phương thức cùng ở tầng dưới chót trị số thượng công tác phương thức tương đồng.

Cái cử giá trị không thể cùng con số tiến hành tương đối. Cái cử có thể cùng đại lượng không đổi tự phù xuyến tiến hành tương đối.Nếu tương đối tự phù xuyến không phải Enum hữu hiệu giá trị, tắc sẽ dẫn phát dị thường.INThao tác phù duy trì bên trái Enum cùng bên phải một tổ tự phù xuyến. Tự phù xuyến là đối ứng Enum giá trị.

Đại đa số trị số cùng tự phù xuyến thao tác không phải vìEnumGiá trị định nghĩa,Tỷ như hướngEnumTrung tăng thêm con số hoặc đem tự phù xuyến liên tiếp đếnEnumTrung. Nhưng mà,EnumCó một cái tự nhiêntoStringHàm số tới phản hồi nó tự phù xuyến giá trị.

Cái cử giá trị cũng có thể sử dụngtoTHàm số thay đổi số lượng tự loại hình, trong đóTLà con số loại hình.ĐươngTĐối ứng với cái cử tầng dưới chót con số loại hình khi, loại này thay đổi là linh đại giới. Nếu chỉ sửa đổi một tổ giá trị, tắc có thể sử dụngALTERLinh đại giới sửa đổiEnumLoại hình. Có thể sử dụng ALTER tăng thêm cùng xóa bỏ Enum thành viên ( chỉ có đương bị xóa bỏ giá trị chưa bao giờ ở biểu trung sử dụng quá hạn, xóa bỏ là an toàn ). Làm bảo hộ thi thố, sửa đổi lúc trước định nghĩa Enum thành viên trị số đem dẫn phát dị thường.

Sử dụngALTER,Có thể đemEnum8Sửa đổi vìEnum16,Phản chi cũng thế, tựa như đemInt8Sửa đổi vìInt16Giống nhau.

Nullable(T)

Cho phép tồn trữ đặc thù đánh dấu (NULL), tỏ vẻ “Thiếu hụt giá trị”, cùngTCho phép bình thường giá trị cùng nhau. Tỷ như,Nullable(Int8)Loại hình liệt có thể tồn trữ Int8 loại hình giá trị, mà không có giá trị sắp sửa tồn trữNULL.

TKhông thể là bất luận cái gì hợp lại số liệu loại hìnhArray,MapCùngTuple,Nhưng hợp lại số liệu loại hình có thể bao hàmNullableLoại hình giá trị, tỷ nhưArray(Nullable(Int8)).

NullableLoại hình tự đoạn không thể bao hàm ở biểu hướng dẫn tra cứu trung.

NULLLà bất luận cái gìNullableLoại hình cam chịu giá trị,Trừ phi ở ClickHouse server phối trí trung có khác chỉ định.

Tồn trữ đặc điểm

Vì ở biểu liệt trung tồn trữNullableLoại hình giá trị, ClickHouse trừ bỏ sử dụng mang giá trị bình thường văn kiện ngoại, còn sử dụng mangNULLGiấu mã đơn độc văn kiện.Giấu mã văn kiện (masks file) trung điều mục cho phép ClickHouse phân chia mỗi cái biểu hành đối ứng số liệu loại hìnhNULLCùng cam chịu giá trị.Bởi vì có một cái thêm vào văn kiện,NullableLiệt so cùng loại bình thường liệt tiêu hao càng nhiều tồn trữ không gian.

Sử dụngNullableCơ hồ luôn là sẽ đối tính năng sinh ra mặt trái ảnh hưởng, ở thiết kế cơ sở dữ liệu khi thỉnh nhớ kỹ điểm này.

Finding NULL

Có thể thông qua sử dụngnullTử liệt tới tra tìm liệt trungNULLGiá trị, mà không cần đọc lấy toàn bộ liệt. Nếu đối ứng giá trị vìNULL,Tắc phản hồi1,Nếu không phản hồi0.

Ví dụ:

CREATETABLEnullable(`n`Nullable(UInt32))ENGINE=MergeTreeORDERBYtuple();

INSERTINTOnullableVALUES(1)(NULL)(2)(NULL);

SELECTn.nullFROMnullable;

在这里插入图片描述

Array(T)

TLoại hình hạng số tổ, lúc đầu số tổ hướng dẫn tra cứu vì1.TCó thể là bất luận cái gì số liệu loại hình, bao gồm số tổ.

Creating an Array

Ngươi có thể sử dụng một cái hàm số tới sáng tạo một số tổ:

array(T)

Cũng có thể sử dụng dấu móc.

[]

Ví dụ:

SELECTarray(1,2)ASx,toTypeName(x)

在这里插入图片描述

SELECT[1,2]ASx,toTypeName(x)

在这里插入图片描述

Sử dụng

Ở động thái sáng tạo số tổ khi, ClickHouse tự động đem tham số loại hình định nghĩa vì có thể tồn trữ sở hữu liệt ra tham số nhất hẹp số liệu loại hình.Nếu tồn tại bất luận cái gìNullableHoặc văn tựNULLGiá trị, tắc số tổ nguyên tố loại hình cũng biến thànhNullable.

Nếu ClickHouse không thể xác định số liệu loại hình, nó sẽ sinh thành một cái dị thường.Tỷ như, đương nếm thử đồng thời sáng tạo tự phù xuyến cùng con số số tổ khi (SELECT array(1, 'a')) liền sẽ phát sinh loại tình huống này.
在这里插入图片描述

Tự động số liệu loại hình kiểm tra đo lường thí dụ mẫu:

SELECTarray(1,2,NULL)ASx,toTypeName(x)

在这里插入图片描述

Số tổ lớn nhỏ

Có thể thông qua sử dụngsize0Tử liệt tới tra tìm số tổ lớn nhỏ, mà không cần đọc lấy toàn bộ liệt.Đối với nhiều duy số tổ, ngài có thể sử dụngsizeN -1,Trong đóNLà sở cần duy độ.

Ví dụ:

CREATETABLEt_arr(`arr`Array(Array(Array(UInt32))))ENGINE=MergeTreeORDERBYtuple();

INSERTINTOt_arrVALUES([[[12,13,0,1],[12]]]);

SELECTarr.size0,arr.size1,arr.size2FROMt_arr;

在这里插入图片描述

UUID

UUID (Universally Unique Identifier) là một cái 16 byte giá trị, dùng cho đánh dấu ký lục.Có quan hệ uuid kỹ càng tỉ mỉ tin tức, thỉnh tham kiến Wikipedia.

Tuy rằng tồn tại bất đồng UUID biến thể ( thỉnh xem thêmNơi này), nhưngClickHouse cũng không nghiệm chứng cắm vào UUID hay không phù hợp riêng biến thể.UUIDs ở nội bộ bị coi là 16 cái tùy cơ byte danh sách, ở SQL cấp bậc có8-4-4-4-12 tỏ vẻ.

UUID giá trị thí dụ mẫu:

61f0c404-5cb3-11e7-907b-a6006ad3dba0

Cam chịu UUID vì toàn linh.Tỷ như, đương cắm vào một cái tân ký lục nhưng không có chỉ định UUID liệt giá trị khi, sử dụng nó:

00000000-0000-0000-0000-000000000000

Sinh thành UUID

ClickHouse cung cấpgenerateUUIDv4Hàm số kiếp sau thành tùy cơ UUID phiên bản 4 giá trị.

Sử dụng thí dụ mẫu

Example 1:
Cái này thí dụ mẫu biểu thị như thế nào sáng tạo một cái bao hàm UUID liệt biểu, cùng với như thế nào hướng biểu trung cắm vào một cái giá trị.

CREATETABLEt_uuid(x UUID,y String)ENGINE=TinyLog

INSERTINTOt_uuidSELECTgenerateUUIDv4(),'Example 1'

SELECT*FROMt_uuid

在这里插入图片描述
Example 2:
Ở bổn lệ trung, cắm vào ký lục khi không có chỉ định UUID liệt giá trị, tức cắm vào cam chịu UUID giá trị:

INSERTINTOt_uuid(y)VALUES('Example 2')

SELECT*FROMt_uuid

在这里插入图片描述

Hạn chế

UUID số liệu loại hình chỉ duy trì String số liệu loại hình cũng duy trì hàm số ( tỷ nhưmin,maxCùngcount).

Số học giải toán ( tỷ nhưabs) hoặc tụ hợp hàm số ( tỷ nhưsumCùngavg) không duy trì UUID số liệu loại hình.

Float32, Float64

Nếu ngài yêu cầu chính xác tính toán, đặc biệt là nếu ngài xử lý yêu cầu cao độ chặt chẽ tài vụ hoặc nghiệp vụ số liệu, tắc hẳn là suy xét sử dụngDecimal.floatKhả năng dẫn tới không chuẩn xác kết quả, như sau sở kỳ:
CREATE TABLE IF NOT EXISTS float_vs_decimal
(
my_float Float64,
my_decimal Decimal64(3)
)Engine=MergeTree ORDER BY tuple()


INSERT INTO float_vs_decimal SELECT round(randCanonical(), 3) AS res, res FROM system.numbers LIMIT 1000000; # Generate 1 000 000 random number with 2 decimal places and store them as a float and as a decimal


SELECT sum(my_float), sum(my_decimal) FROM float_vs_decimal;
500279.56300000014 500279.563


SELECT sumKahan(my_float), sumKahan(my_decimal) FROM float_vs_decimal;
500279.563 500279.563

Biệt danh:

  • Float32FLOAT,REAL,SINGLE.
  • Float64DOUBLE,DOUBLE PRECISION.

Ở sáng tạo biểu khi, có thể thiết trí phù điểm số trị số tham số ( tỷ nhưFLOAT(12),FLOAT(15,22),DOUBLE(12),DOUBLE(4,18)), nhưng ClickHouse sẽ xem nhẹ chúng nó.

Sử dụng phù điểm số

Sử dụng phù điểm số tiến hành tính toán khả năng sẽ sinh ra xá nhập khác biệt.

SELECT1-0.9

在这里插入图片描述

  • Tính toán kết quả quyết định bởi với tính toán phương pháp ( máy tính hệ thống xử lý khí loại hình cùng hệ thống kết cấu ).
  • Phù điểm tính toán khả năng sẽ sinh ra như là vô cùng đại (Inf) cùng “Phi con số” (NaN) linh tinh con số. Ở xử lý tính toán kết quả khi dự thi lự đến điểm này.
  • Từ văn bản phân tích phù điểm số khi, kết quả khả năng không phải nhất tiếp cận máy móc nhưng tỏ vẻ con số.

NaNandInf

Cùng tiêu chuẩn SQL so sánh với, ClickHouse duy trì dưới loại hình phù điểm số:

  • Inf– Infinity.
SELECT0.5/0

在这里插入图片描述

  • -Inf— Negative infinity.
SELECT-0.5/0

在这里插入图片描述

  • NaN— Not a number.
SELECT0/0

在这里插入图片描述

Bool

boolLoại hình ở nội bộ tồn trữ vìUInt8.Khả năng giá trị làtrue(1),false(0).

selecttrueascol,toTypeName(col);

在这里插入图片描述

selecttrue==1ascol,toTypeName(col);

在这里插入图片描述

CREATETABLEtest_bool
(
`A`Int64,
`B`Bool
)
ENGINE=Memory;

INSERTINTOtest_boolVALUES(1,true),(2,0);

在这里插入图片描述

JSON

Cái này đặc tính là thực nghiệm tính, còn không thể dùng cho sinh sản. Nếu ngài yêu cầu sử dụng JSON hồ sơ, thỉnh suy xét sử dụngBổn chỉ nam.

Ở viết ra từng điều trung tồn trữ JavaScript đối tượng tỏ vẻ pháp (JSON) hồ sơ.

JSONis an alias forObject('json').

JSON số liệu loại hình là một cái quá hạn đặc tính. Không cần sử dụng nó. Nếu ngài tưởng sử dụng nó, thỉnh thiết trí allow_experimental_object_type = 1.

Example 1:

Sáng tạo một cái có chứaJSONLiệt biểu, cũng đem số liệu cắm vào trong đó:

CREATETABLEjson
(
o JSON
)
ENGINE=Memory

INSERTINTOjsonVALUES('{ "a": 1, "b": { "c": 2, "d": [1, 2, 3] }}')

SELECTo.a,o.b.c,o.b.d[3]FROMjson

在这里插入图片描述
Example 2:
Vì có thể sáng tạo có tựMergeTreeTộc biểu, cần thiết đem bài tự kiện lấy ra đến này liệt trung. Tỷ như, cắm vào một cái JSON cách thức HTTP phỏng vấn nhật ký áp súc văn kiện:

CREATETABLElogs
(
timestampDateTime,
message JSON
)
ENGINE=MergeTree
ORDERBYtimestamp

INSERTINTOlogs
SELECTparseDateTimeBestEffort(JSONExtractString(json,'timestamp')),json
FROMfile('access.json.gz',JSONAsString)

Biểu hiện JSON liệt

Ở biểu hiệnJSONLiệt khi, ClickHouse cam chịu chỉ biểu hiện tự đoạn giá trị ( bởi vì ở nội bộ, nó bị tỏ vẻ vì một cái nguyên tổ ). Ngươi cũng có thể thông qua thiết trí output_format_json_named_tuples_as_objects = 1 tới biểu hiện tự đoạn danh:

SEToutput_format_json_named_tuples_as_objects=1

SELECT*FROMjson FORMAT JSONEachRow

在这里插入图片描述

Map(key, value)

Map(key, value)Số liệu loại hình tồn trữkey:valueKiện giá trị đối.

Tham số

  • key— The key part of the pair.String,Integer,LowCardinality,FixedString,UUID,Date,DateTime,Date32,Enum.
  • value— The value part of the pair. Arbitrary type, includingMapandArray.

Muốn từa Map('key', 'value')Liệt trung thu hoạch giá trị, thỉnh sử dụnga['key']Ngữ pháp. Loại này tra tìm hiện tại lấy tuyến tính phức tạp độ công tác.

Ví dụ

Suy xét biểu:

CREATETABLEtable_map(a Map(String,UInt64))ENGINE=Memory;
INSERTINTOtable_mapVALUES({'key1':1,'key2':10}),({'key1':2,'key2':20}),({'key1':3,'key2':30});

Lựa chọn sở hữukey2Giá trị:

SELECTa['key2']FROMtable_map;

在这里插入图片描述
NếuMap()Liệt trung không có như vậy ``, tuần tra đem số lượng giá trị phản hồi linh, không tự phù xuyến hoặc không số tổ.

insertintotable_mapvalues({'key1':4,'key2':40})
insertintotable_mapvalues({'key1':4,'key3':40})

selecta['key2']fromtable_map

在这里插入图片描述

Đem nguyên tổ thay đổi vì chiếu rọi loại hình

Ngươi có thể sử dụngCASTHàm số đemTuple()Thay đổi vìMap():

SELECTCAST(([1,2,3],['Ready','Steady','Go']),'Map(UInt8, String)')ASmap;

在这里插入图片描述

Map.keysCùngMap.valuesTử liệt

Vì ưu hoáMapLiệt xử lý, ở nào đó dưới tình huống có thể sử dụngkeysCùngvaluesTử liệt, mà không phải đọc lấy toàn bộ liệt.

Example:

CREATETABLEt_map(`a`Map(String,UInt64))ENGINE=Memory;

INSERTINTOt_mapVALUES(map('key1',1,'key2',2,'key3',3));

SELECTa.keysFROMt_map;

SELECTa.valuesFROMt_map;

在这里插入图片描述
在这里插入图片描述

Related content

Blog:Building an Observability Solution with ClickHouse - Part 2 - Traces

LowCardinality

Đem mặt khác số liệu loại hình bên trong tỏ vẻ sửa đổi vì từ điển mã hóa.

LowCardinality(data_type)
  • data_type-String,FixedString,Date,DateTimeCùng con số (DecimalNgoại trừ ).LowCardinalityĐối với nào đó số liệu loại hình không phải hữu hiệu, thỉnh tham kiếnallow_suspicious_low_cardinality_typesThiết trí thuyết minh.

LowCardinalityLà thay đổi số liệu tồn trữ phương pháp cùng số liệu xử lý quy tắc thượng tầng kết cấu. ClickHouse đốiLowCardinality-columns ứng dụngTừ điển mã hóa.Đối rất nhiều ứng dụng trình tự tới nói, sử dụngTừ điển mã hóaSố liệu có thể lộ rõ đề caoSELECTTuần tra tính năng.

Sử dụngLowCardinalitySố liệu loại hình hiệu suất quyết định bởi với số liệu đa dạng tính.Nếu từ điển bao hàm thiếu với 10,000 cái bất đồng giá trị, như vậy ClickHouse thông thường biểu hiện ra càng cao số liệu đọc lấy cùng tồn trữ hiệu suất.Nếu từ điển bao hàm vượt qua 100,000 cái bất đồng giá trị, như vậy cùng sử dụng bình thường số liệu loại hình so sánh với, ClickHouse tính năng khả năng sẽ càng kém.

Ở xử lý tự phù xuyến khi, suy xét sử dụngLowCardinalityMà không phảiEnum.LowCardinalityỞ sử dụng trung cung cấp lớn hơn nữa linh hoạt tính, hơn nữa thông thường biểu hiện tương đồng hoặc càng cao hiệu suất.

Ví dụ

Sáng tạo một cáiLowCardinalityLiệt biểu:

CREATETABLElc_t
(
`id`UInt16,
`strings`LowCardinality(String)
)
ENGINE=MergeTree()
ORDERBYid

Tương quan thiết trí cùng hàm số

Settings:

Functions:

  • toLowCardinality
    Đem đưa vào tham số thay đổi vì tương đồng số liệu loại hìnhLowCardinalityPhiên bản.

Muốn từLowCardinalitySố liệu loại hình thay đổi số liệu, thỉnh sử dụngCASTHàm số. Tỷ như,CAST(x as String).

toLowCardinality(expr)

AggregateFunction

Tụ hợp hàm số có thể có thực hiện định nghĩa trung gian trạng thái, nên trạng thái có thể danh sách hóa thànhAggregateFunction(…)Số liệu loại hình, cũng thông thường thông quaVật hoá đồ thị hình chiếuTồn trữ ở biểu trung. Sinh thành tụ hợp hàm số trạng thái thường dùng phương pháp là thuyên chuyển có chứa-StateHậu tố tụ hợp hàm số. Muốn ở tương lai đạt được tụ hợp cuối cùng kết quả, cần thiết sử dụng mang-MergeHậu tố tương đồng tụ hợp hàm số.

AggregateFunction(name, types_of_arguments…)- tham số số liệu loại hình.

  • Tụ hợp hàm số tên. Nếu hàm số là tham số hóa, cũng muốn chỉ định nó tham số.
  • Tụ hợp hàm số tham số loại hình.

Example:

CREATETABLEt
(
column1 AggregateFunction(uniq,UInt64),
column2 AggregateFunction(anyIf,String,UInt8),
column3 AggregateFunction(quantiles(0.5,0.9),UInt64)
)ENGINE=...

Cách dùng

Số liệu cắm vào

Muốn cắm vào số liệu, sử dụngINSERT SELECTCùng aggregate-State- hàm số.

uniqState(UserID)
quantilesState(0.5,0.9)(SendTiming)

CùnguniqCùngquantilesĐối ứng hàm số tương phản,-StateHàm số phản hồi trạng thái, mà không phải cuối cùng giá trị.Nói cách khác, chúng nó phản hồiAggregateFunctionLoại hình giá trị.

SELECTTuần tra kết quả trung,AggregateFunctionLoại hình giá trị đối với sở hữu ClickHouse phát ra cách thức đều có riêng với thực hiện cơ số hai tỏ vẻ. Tỷ như, nếu sử dụngSELECTTuần tra đem số liệu chuyển trữ vìTabSeparatedCách thức, tắc có thể sử dụngINSERTTuần tra đem này chuyển trữ thêm tái trở về.

Số liệu tuần tra

Đương từAggregatingMergeTreeBiểu trúng tuyển chọn số liệu khi, sử dụngGROUP BYMệnh đề phụ cùng với cắm vào số liệu khi tương đồng tụ hợp hàm số, nhưng sử dụng-MergeHậu tố.

Có chứa-MergeHậu tố tụ hợp hàm số tiếp thu một tổ trạng thái, đem chúng nó tổ hợp lên, cũng phản hồi hoàn chỉnh số liệu tụ hợp kết quả.

Tỷ như, phía dưới hai cái tuần tra phản hồi tương đồng kết quả:

SELECTuniq(UserID)FROMtable

SELECTuniqMerge(state)FROM(SELECTuniqState(UserID)ASstateFROMtableGROUPBYRegionID)

SimpleAggregateFunction

SimpleAggregateFunction(name, types_of_arguments…)Số liệu loại hình tồn trữ tụ hợp hàm số trước mặt giá trị, mà không giốngAggregateFunctionNhư vậy tồn trữ này hoàn chỉnh trạng thái. Này ưu hoá có thể ứng dụng với dưới thuộc tính thành lập hàm số: Hàm sốfĐối hành tậpS1 UNION ALL S2Tác dụng kết quả có thể thông qua phân biệt đối hành tập bộ phận ứng dụngf,Sau đó lại đối kết quả ứng dụngfĐược đến:f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)).Cái này thuộc tính bảo đảm bộ phận tụ hợp kết quả đủ để tính toán xác nhập sau kết quả, bởi vậy chúng ta không cần tồn trữ cùng xử lý bất luận cái gì thêm vào số liệu.

Sinh thành tụ hợp hàm số giá trị thường dùng phương pháp là thuyên chuyển có chứa-SimpleStateHậu tố tụ hợp hàm số.

Thỉnh chú ý,-MapStateKhông phải tương đồng số liệu bất biến lượng, bởi vì ở vào trung gian trạng thái số liệu trình tự có thể thay đổi, cứ việc nó sẽ không ảnh hưởng nên số liệu thu lấy.

Bình luận
Tăng thêm bao lì xì

Thỉnh điền bao lì xì chúc phúc ngữ hoặc tiêu đề

Cái

Bao lì xì cái số nhỏ nhất vì 10 cái

Nguyên

Bao lì xì kim ngạch thấp nhất 5 nguyên

Trước mặt ngạch trống3.43Nguyên Đi trước nạp phí >
Cần chi trả:10.00Nguyên
Thành tựu một trăm triệu kỹ thuật người!
Lĩnh sau ngươi sẽ tự động trở thành bác chủ cùng bao lì xì chủ fans Quy tắc
hope_wisdom
Phát ra bao lì xì
Thật phóNguyên
Sử dụng ngạch trống chi trả
Điểm đánh một lần nữa thu hoạch
Quét mã chi trả
Tiền bao ngạch trống 0

Để khấu thuyết minh:

1. Ngạch trống là tiền bao nạp phí giả thuyết tiền, dựa theo 1:1 tỉ lệ tiến hành chi trả kim ngạch để khấu.
2. Ngạch trống vô pháp trực tiếp mua sắm download, có thể mua sắm VIP, trả phí chuyên mục cập chương trình học.

Ngạch trống nạp phí