* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
5.0 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
40 | Unir |
Unir
Estructura de datos preparada para usar en JOIN operación.
Creación de una tabla
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
) ENGINE = Join(join_strictness, join_type, k1[, k2, ...])
Vea la descripción detallada del CREATE TABLE consulta.
Parámetros del motor
join_strictness
– ÚNETE a la rigurosidad.join_type
– Tipo de unión.k1[, k2, ...]
– Key columns from theUSING
cláusula que elJOIN
operación se hace con.
Entrar join_strictness
y join_type
parámetros sin comillas, por ejemplo, Join(ANY, LEFT, col1)
. Deben coincidir con el JOIN
operación para la que se utilizará la tabla. Si los parámetros no coinciden, ClickHouse no lanza una excepción y puede devolver datos incorrectos.
Uso de la tabla
Ejemplo
Creación de la tabla del lado izquierdo:
CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = TinyLog
INSERT INTO id_val VALUES (1,11)(2,12)(3,13)
Creando el lado derecho Join
tabla:
CREATE TABLE id_val_join(`id` UInt32, `val` UInt8) ENGINE = Join(ANY, LEFT, id)
INSERT INTO id_val_join VALUES (1,21)(1,22)(3,23)
Unirse a las tablas:
SELECT * FROM id_val ANY LEFT JOIN id_val_join USING (id) SETTINGS join_use_nulls = 1
┌─id─┬─val─┬─id_val_join.val─┐
│ 1 │ 11 │ 21 │
│ 2 │ 12 │ ᴺᵁᴸᴸ │
│ 3 │ 13 │ 23 │
└────┴─────┴─────────────────┘
Como alternativa, puede recuperar datos del Join
tabla, especificando el valor de la clave de unión:
SELECT joinGet('id_val_join', 'val', toUInt32(1))
┌─joinGet('id_val_join', 'val', toUInt32(1))─┐
│ 21 │
└────────────────────────────────────────────┘
Selección e inserción de datos
Usted puede utilizar INSERT
consultas para agregar datos al Join
-mesas de motor. Si la tabla se creó con el ANY
estricta, se ignoran los datos de las claves duplicadas. Con el ALL
estricta, se agregan todas las filas.
No se puede realizar una SELECT
consulta directamente desde la tabla. En su lugar, use uno de los siguientes métodos:
- Coloque la mesa hacia el lado derecho en un
JOIN
clausula. - Llame al joinGet función, que le permite extraer datos de la tabla de la misma manera que de un diccionario.
Limitaciones y ajustes
Al crear una tabla, se aplican los siguientes valores:
- Sistema abierto.
- Método de codificación de datos:
- Método de codificación de datos:
- join_overflow_mode
- join_any_take_last_row
El Join
-las tablas del motor no se pueden usar en GLOBAL JOIN
operación.
El Join
-motor permite el uso Sistema abierto. ajuste en el CREATE TABLE
instrucción. Y SELECT consulta permite el uso join_use_nulls
demasiado. Si tienes diferentes join_use_nulls
configuración, puede obtener un error al unirse a la tabla. Depende del tipo de JOIN. Cuando se utiliza joinGet función, usted tiene que utilizar el mismo join_use_nulls
ajuste en CRATE TABLE
y SELECT
instrucción.
Almacenamiento de datos
Join
datos de la tabla siempre se encuentra en la memoria RAM. Al insertar filas en una tabla, ClickHouse escribe bloques de datos en el directorio del disco para que puedan restaurarse cuando se reinicie el servidor.
Si el servidor se reinicia incorrectamente, el bloque de datos en el disco puede perderse o dañarse. En este caso, es posible que deba eliminar manualmente el archivo con datos dañados.