Insertar filas de las tablas de transmisión en una tabla en tiempo real

Tengo dos tablas que dicen PERRO y PESCADO. La tabla DOG tiene columnas

name|species-name|neighbourhood

La tabla FISH tiene columnas

name|species-name|water-type

En ambas tablas, los datos se transmiten en tiempo real. Quiero agregar los datos de cada una de las tablas a una nueva tabla Animales en tiempo real que tenga columnas.

name|species-name|neighbourhood|water-type

Por ejemplo: - para la mesa del perro, se transmiten dos filas, es decir

yxz, shephard, london
abc, poodle, NYC

para la mesa de pescado, se transmiten dos filas, es decir

lkj, Tuna, saltwater
ghf, Cod, freshwater

Quiero datos de ambas tablas en una tabla de animales como

name|species-name|neighbourhood|water-type
----+------------+-------------+----------
yxz  shephard     london
abc  poodle       NYC
lkj  Tuna                       saltwater
ghf  Cod                        freshwater
------------------------------------------

He usado la vista materializada para una tabla, pero parece que no puedo entender cómo puedo usarla para unir dos tablas.

Answer

Según tengo entendido, desea unir dos flujos de datos en una tabla.

Simplemente puede crear una vista materializada para cada una de las tablas ( dogsy fish)

CREATE MATERIALIZED VIEW fish_mt TO animal AS
SELECT `name`, `species-name`, `water-type` FROM fish;

CREATE MATERIALIZED VIEW dogs_mt TO animal AS
SELECT `name`, `species-name`, `neighbourhood` FROM dogs;

Su tabla de resultados ( animal) debe contener las columnas de ambas tablas de origen.


Si desea cambiar el esquema de la tabla de resultados ( animal) dinámicamente, supongo que no hay una forma directa de hacerlo ahora (versión 21.12). Pero pronto se agregará soporte para datos JSON semiestructurados, puede buscar allí. https://github.com/ClickHouse/ClickHouse/pull/22535