Cuándo usarlo
query_log no está replicada, y solo se registran las consultas que se ejecutan en un nodo específico. Los datos también pueden rotarse a otra tabla. Por ejemplo, los datos pueden insertarse en query_log_0, query_log_1, etc. Como cada nodo puede rotar en momentos distintos, resulta útil intentar encontrar los datos que buscamos en tablas que no tienen exactamente el mismo nombre.
En esencia, necesitamos hacer algo como esto, pero con la sintaxis de ClickHouse:
SELECT column1, column2 FROM my_db.my_table_*
Para ello, podemos usar clusterAllReplicas() para buscar en todos los nodos y la función de tabla merge() para poder usar un patrón de expresión regular al buscar en varias tablas.
El siguiente ejemplo muestra cómo consultar todas las tablas con el prefijo query_log:
EXCEPT para excluir cualquier columna que pueda no estar presente en distintas tablas.
ejemplo: