提交 ecab4467 编写于 作者: G George

updated and added translation

上级 e612ad2b
......@@ -186,10 +186,6 @@ In ClickHouse, queries are always run on blocks (sets of column parts). This fun
Returns estimation of uncompressed byte size of its arguments in memory.
E.g. for [UInt32](../../sql-reference/data-types/int-uint.md) argument it will return constant 4, for [String](../../sql-reference/data-types/string.md) arguments — the string length + 9 (terminating zero + length).
The function can take multiple arguments. The typical application is byteSize(*).
Use case: suppose you have a service that stores data for multiple clients in one table. Users will pay per data volume. So, you need to implement accounting of users data volume. The function will allow to calculate the data size on per-row basis.
**Syntax**
......@@ -208,7 +204,9 @@ byteSize(argument [, ...])
Type: [UInt64](../../sql-reference/data-types/int-uint.md).
**Example**
**Examples**
For [String](../../sql-reference/data-types/string.md) arguments the funtion returns the string length + 9 (terminating zero + length).
Query:
......@@ -218,11 +216,11 @@ SELECT byteSize('string');
Result:
```text
┌─byteSize('string')─┐
│ 15 │
└────────────────────┘
For this table:
```
Query:
......@@ -243,43 +241,43 @@ CREATE TABLE test
)
ENGINE = MergeTree
ORDER BY key;
```
Insert this values:
INSERT INTO test VALUES(1, 8, 16, 32, 64, -8, -16, -32, -64, 32.32, 64.64);
Query:
SELECT key, byteSize(u8) AS `byteSize(UInt8)`, byteSize(u16) AS `byteSize(UInt16)`, byteSize(u32) AS `byteSize(UInt32)`, byteSize(u64) AS `byteSize(UInt64)` FROM test ORDER BY key ASC FORMAT Vertical;
```sql
insert into test values(1, 8, 16, 32, 64, -8, -16, -32, -64, 32.32, 64.64);
```
SELECT key, byteSize(i8) AS `byteSize(Int8)`, byteSize(i16) AS `byteSize(Int16)`, byteSize(i32) AS `byteSize(Int32)`, byteSize(i64) AS `byteSize(Int64)` FROM test ORDER BY key ASC FORMAT Vertical;
Query:
```sql
SELECT key, toTypeName(u8), byteSize(u8), toTypeName(u16), byteSize(u16), toTypeName(u32), byteSize(u32), toTypeName(u64), byteSize(u64) FROM test ORDER BY key ASC;
SELECT key, toTypeName(i8), byteSize(i8), toTypeName(i16), byteSize(i16), toTypeName(i32), byteSize(i32), toTypeName(i64), byteSize(i64), FROM test ORDER BY key ASC;
SELECT key, toTypeName(f32), byteSize(f32), toTypeName(f64), byteSize(f64) FROM test ORDER BY key ASC;
SELECT key, byteSize(f32) AS `byteSize(Float32)`, byteSize(f64) AS `byteSize(Float64)` FROM test ORDER BY key ASC FORMAT Vertical;
```
Result:
``` text
┌─key─┬─toTypeName(u8)─┬─byteSize(u8)─┬─toTypeName(u16)─┬─byteSize(u16)─┬─toTypeName(u32)─┬─byteSize(u32)─┬─toTypeName(u64)─┬─byteSize(u64)─┐
│ 1 │ UInt8 │ 1 │ UInt16 │ 2 │ UInt32 │ 4 │ UInt64 │ 8 │
└─────┴────────────────┴──────────────┴─────────────────┴───────────────┴─────────────────┴───────────────┴─────────────────┴───────────────┘
Row 1:
──────
key: 1
byteSize(UInt8): 1
byteSize(UInt16): 2
byteSize(UInt32): 4
byteSize(UInt64): 8
┌─key─┬─toTypeName(i8)─┬─byteSize(i8)─┬─toTypeName(i16)─┬─byteSize(i16)─┬─toTypeName(i32)─┬─byteSize(i32)─┬─toTypeName(i64)─┬─byteSize(i64)─┐
│ 1 │ Int8 │ 1 │ Int16 │ 2 │ Int32 │ 4 │ Int64 │ 8 │
└─────┴────────────────┴──────────────┴─────────────────┴───────────────┴─────────────────┴───────────────┴─────────────────┴───────────────┘
Row 1:
──────
key: 1
byteSize(Int8): 1
byteSize(Int16): 2
byteSize(Int32): 4
byteSize(Int64): 8
┌─key─┬─toTypeName(f32)─┬─byteSize(f32)─┬─toTypeName(f64)─┬─byteSize(f64)─┐
│ 1 │ Float32 │ 4 │ Float64 │ 8 │
└─────┴─────────────────┴───────────────┴─────────────────┴───────────────┘
Row 1:
──────
key: 1
byteSize(Float32): 4
byteSize(Float64): 8
```
With multiple arguments:
The function can take multiple arguments and will return their combined byte size.
Query:
......
......@@ -183,6 +183,117 @@ SELECT visibleWidth(NULL)
Получить размер блока.
В ClickHouse выполнение запроса всегда идёт по блокам (наборам кусочков столбцов). Функция позволяет получить размер блока, для которого её вызвали.
## byteSize {#function-bytesize}
Returns estimation of uncompressed byte size of its arguments in memory. Возвращает примерный размер аргументов в памяти в байтах.
Пример использования: в сервисе, хранящим данные для нескольких клиентов в одной таблице, пользователь платит за хранение данных. Пэтому требуется узнать количество памяти, занимаемое ими. Функция позволяет вычислить размер данных для каждой строки.
**Синтаксис**
```sql
byteSize(argument [, ...])
```
**Параметры**
- `argument` — значение.
**Возвращаемое значение**
- Оценка размера аргументов в памяти в байтах.
Тип: [UInt64](../../sql-reference/data-types/int-uint.md).
**Примеры**
Для аргументов типа [String](../../sql-reference/data-types/string.md) функция возвращает длину строки + 9 (нуль-терминатор + длина)
Запрос:
```sql
SELECT byteSize('string');
```
Результат:
```text
┌─byteSize('string')─┐
│ 15 │
└────────────────────┘
```
Запрос:
```sql
CREATE TABLE test
(
`key` Int32,
`u8` UInt8,
`u16` UInt16,
`u32` UInt32,
`u64` UInt64,
`i8` Int8,
`i16` Int16,
`i32` Int32,
`i64` Int64,
`f32` Float32,
`f64` Float64
)
ENGINE = MergeTree
ORDER BY key;
INSERT INTO test VALUES(1, 8, 16, 32, 64, -8, -16, -32, -64, 32.32, 64.64);
SELECT key, byteSize(u8) AS `byteSize(UInt8)`, byteSize(u16) AS `byteSize(UInt16)`, byteSize(u32) AS `byteSize(UInt32)`, byteSize(u64) AS `byteSize(UInt64)` FROM test ORDER BY key ASC FORMAT Vertical;
SELECT key, byteSize(i8) AS `byteSize(Int8)`, byteSize(i16) AS `byteSize(Int16)`, byteSize(i32) AS `byteSize(Int32)`, byteSize(i64) AS `byteSize(Int64)` FROM test ORDER BY key ASC FORMAT Vertical;
SELECT key, byteSize(f32) AS `byteSize(Float32)`, byteSize(f64) AS `byteSize(Float64)` FROM test ORDER BY key ASC FORMAT Vertical;
```
Результат:
``` text
Row 1:
──────
key: 1
byteSize(UInt8): 1
byteSize(UInt16): 2
byteSize(UInt32): 4
byteSize(UInt64): 8
Row 1:
──────
key: 1
byteSize(Int8): 1
byteSize(Int16): 2
byteSize(Int32): 4
byteSize(Int64): 8
Row 1:
──────
key: 1
byteSize(Float32): 4
byteSize(Float64): 8
```
Функция может принимать несколько аргументов и будет выводить их совокупный размер в байтах.
Запрос:
```sql
SELECT byteSize(NULL, 1, 0.3, '');
```
Результат:
```text
┌─byteSize(NULL, 1, 0.3, '')─┐
│ 19 │
└────────────────────────────┘
```
## materialize(x) {#materializex}
Превращает константу в полноценный столбец, содержащий только одно значение.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册