* 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
6.8 KiB
machine_translated | machine_translated_rev |
---|---|
true | 72537a2d52 |
Cláusula SAMPLE
El SAMPLE
cláusula permite aproximadamente SELECT
procesamiento de consultas.
Cuando se habilita el muestreo de datos, la consulta no se realiza en todos los datos, sino solo en una cierta fracción de datos (muestra). Por ejemplo, si necesita calcular estadísticas para todas las visitas, es suficiente ejecutar la consulta en la fracción 1/10 de todas las visitas y luego multiplicar el resultado por 10.
El procesamiento de consultas aproximado puede ser útil en los siguientes casos:
- Cuando tiene requisitos de temporización estrictos (como <100 ms) pero no puede justificar el costo de recursos de hardware adicionales para cumplirlos.
- Cuando sus datos sin procesar no son precisos, la aproximación no degrada notablemente la calidad.
- Los requisitos comerciales se centran en los resultados aproximados (por rentabilidad o para comercializar los resultados exactos a los usuarios premium).
!!! note "Nota" Sólo puede utilizar el muestreo con las tablas en el Método de codificación de datos: familia, y sólo si la expresión de muestreo se especificó durante la creación de la tabla (ver Motor MergeTree).
Las características del muestreo de datos se enumeran a continuación:
- El muestreo de datos es un mecanismo determinista. El resultado de la misma
SELECT .. SAMPLE
la consulta es siempre la misma. - El muestreo funciona consistentemente para diferentes tablas. Para tablas con una sola clave de muestreo, una muestra con el mismo coeficiente siempre selecciona el mismo subconjunto de datos posibles. Por ejemplo, una muestra de ID de usuario toma filas con el mismo subconjunto de todos los ID de usuario posibles de diferentes tablas. Esto significa que puede utilizar el ejemplo en subconsultas IN clausula. Además, puede unir muestras usando el JOIN clausula.
- El muestreo permite leer menos datos de un disco. Tenga en cuenta que debe especificar la clave de muestreo correctamente. Para obtener más información, consulte Creación de una tabla MergeTree.
Para el SAMPLE
cláusula se admite la siguiente sintaxis:
SAMPLE Clause Syntax | Descripci |
---|---|
SAMPLE k |
Aqui k es el número de 0 a 1.La consulta se ejecuta en k de datos. Por ejemplo, SAMPLE 0.1 ejecuta la consulta en el 10% de los datos. Leer más |
SAMPLE n |
Aqui n es un entero suficientemente grande.La consulta se ejecuta en una muestra de al menos n filas (pero no significativamente más que esto). Por ejemplo, SAMPLE 10000000 ejecuta la consulta en un mínimo de 10.000.000 de filas. Leer más |
SAMPLE k OFFSET m |
Aqui k y m son los números del 0 al 1.La consulta se ejecuta en una muestra de k de los datos. Los datos utilizados para el ejemplo se compensan por m fracción. Leer más |
SAMPLE K
Aqui k
es el número de 0 a 1 (se admiten notaciones fraccionarias y decimales). Por ejemplo, SAMPLE 1/2
o SAMPLE 0.5
.
En un SAMPLE k
cláusula, la muestra se toma de la k
de datos. El ejemplo se muestra a continuación:
SELECT
Title,
count() * 10 AS PageViews
FROM hits_distributed
SAMPLE 0.1
WHERE
CounterID = 34
GROUP BY Title
ORDER BY PageViews DESC LIMIT 1000
En este ejemplo, la consulta se ejecuta en una muestra de 0,1 (10%) de datos. Los valores de las funciones agregadas no se corrigen automáticamente, por lo que para obtener un resultado aproximado, el valor count()
se multiplica manualmente por 10.
SAMPLE N
Aqui n
es un entero suficientemente grande. Por ejemplo, SAMPLE 10000000
.
En este caso, la consulta se ejecuta en una muestra de al menos n
filas (pero no significativamente más que esto). Por ejemplo, SAMPLE 10000000
ejecuta la consulta en un mínimo de 10.000.000 de filas.
Dado que la unidad mínima para la lectura de datos es un gránulo (su tamaño se establece mediante el index_granularity
ajuste), tiene sentido establecer una muestra que es mucho más grande que el tamaño del gránulo.
Cuando se utiliza el SAMPLE n
cláusula, no sabe qué porcentaje relativo de datos se procesó. Por lo tanto, no sabe el coeficiente por el que se deben multiplicar las funciones agregadas. Utilice el _sample_factor
columna virtual para obtener el resultado aproximado.
El _sample_factor
columna contiene coeficientes relativos que se calculan dinámicamente. Esta columna se crea automáticamente cuando crear una tabla con la clave de muestreo especificada. Los ejemplos de uso del _sample_factor
columna se muestran a continuación.
Consideremos la tabla visits
, que contiene las estadísticas sobre las visitas al sitio. El primer ejemplo muestra cómo calcular el número de páginas vistas:
SELECT sum(PageViews * _sample_factor)
FROM visits
SAMPLE 10000000
El siguiente ejemplo muestra cómo calcular el número total de visitas:
SELECT sum(_sample_factor)
FROM visits
SAMPLE 10000000
El siguiente ejemplo muestra cómo calcular la duración media de la sesión. Tenga en cuenta que no necesita usar el coeficiente relativo para calcular los valores promedio.
SELECT avg(Duration)
FROM visits
SAMPLE 10000000
SAMPLE K OFFSET M
Aqui k
y m
son números del 0 al 1. Los ejemplos se muestran a continuación.
Ejemplo 1
SAMPLE 1/10
En este ejemplo, la muestra es 1/10 de todos los datos:
[++------------]
Ejemplo 2
SAMPLE 1/10 OFFSET 1/2
Aquí, se toma una muestra del 10% de la segunda mitad de los datos.
[------++------]