diff --git a/src/lib/components/Datasets/Columns.svelte b/src/lib/components/Datasets/Columns.svelte index e147984..8fd427b 100644 --- a/src/lib/components/Datasets/Columns.svelte +++ b/src/lib/components/Datasets/Columns.svelte @@ -14,11 +14,9 @@ diff --git a/src/lib/olap-engine/queries/clickhouse_get_schema.sql b/src/lib/olap-engine/queries/clickhouse_get_schema.sql index 1878eb4..8b7dc8c 100644 --- a/src/lib/olap-engine/queries/clickhouse_get_schema.sql +++ b/src/lib/olap-engine/queries/clickhouse_get_schema.sql @@ -1,9 +1,27 @@ +WITH + raw AS ( + SELECT + t.name AS name, + IF(t.as_select LIKE '%s3(%', 'S3', t.engine) AS engine, + groupArray(map('name', c.name, 'type', c.type)) AS columns, + any(comment) as comment + FROM system.tables AS t + LEFT JOIN system.columns AS c + ON t.name = c.table + WHERE database = currentDatabase() + GROUP BY name, engine + ORDER BY name + ) + SELECT - t.name AS name, - IF(t.as_select LIKE '%s3(%', 'S3', t.engine) AS engine, - groupArray(map('name', c.name, 'type', c.type)) AS columns -FROM system.tables AS t -INNER JOIN system.columns AS c - ON t.name = c.table -WHERE database = currentDatabase() -GROUP BY name, engine + name, + engine, + IF( + length(columns) > 0 and length(raw.columns[1]['name']) > 0, + columns, + JSONExtract(comment, 'columns', 'Array(Map(String,String))') + ) as columns, + JSONExtractString(comment, 'short') as short, + JSONExtractString(comment, 'url') as url, + JSONExtractString(comment, 'usage') as usage +FROM raw