From ca855bf00b31c2650402ab19472c1b24fffb1d02 Mon Sep 17 00:00:00 2001 From: didierfranc Date: Mon, 24 Feb 2025 17:49:07 +0100 Subject: [PATCH] feat: fallback schema from comment --- src/lib/components/Datasets/Columns.svelte | 4 +-- src/lib/components/Datasets/Datasets.svelte | 8 +++-- src/lib/components/Datasets/Tree.svelte | 27 +++++---------- .../queries/clickhouse_get_schema.sql | 34 ++++++++++++++----- 4 files changed, 41 insertions(+), 32 deletions(-) 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