Запросы Tableau с JOINS и проверка на NULL не работают в ClickHouse

Я запускаю Tableau, подключенный к ClickHouse через драйвер ODBC. Поначалу практически любой запрос отчета не выполнялся. Я настроил этот tdc-файл https://github.com/yandex/clickhouse-odbc/blob/clickhouse-tbc/clickhouse.tdc, и он фактически начал работать, однако теперь некоторые запросы запросов с JOINS, которые содержат проверку NULL в ON, не работают из-за использования IS NULL вместо isNull(id)

JOIN users ON ((users.user_id = t0.user_id) OR ((users.user_id IS NULL) AND (t0.user_id IS NULL)))

Это правильный способ работы:

JOIN users ON ((users.user_id = t0.user_id) OR ((isNull(users.user_id) = 1) AND (isNull(t0.user_id) = 1 IS NULL)))

Как сделать так, чтобы драйвер таблау отправлял правильный запрос?


person Dima    schedule 06.04.2019    source источник
comment
Вы также можете попробовать CAP_QUERY_NULL_REQUIRES_CAST?   -  person filimonov    schedule 15.04.2019


Ответы (2)


Вот несколько предложений:

Этот пост в Сообществе Tableau, похоже, имеет симптомы, похожие на вы описываете. Предлагаемое решение состоит в том, чтобы обернуть все поля как таковые IfNull([Dimension], ""), тем самым уменьшив, по-видимому, потребность в том, чтобы Clickhouse выполнял проверку нулей.

Файл TDC с Github выглядит довольно полным, но, возможно, они не приняли во внимание объединения. В GitHub говорится, что tdc «не протестирован». Я бы отправил сообщение создателю этого TDC и посмотрел, проделали ли они какую-либо работу по объединению и есть ли у них какие-либо предложения.

Вот список возможных ODBC Настройки, которые можно добавить в или удалить файл TDC. Комбинация этих способов может потребовать некоторых экспериментов, но их стоит изучить как возможное решение.

Создайте выдержку перед выполнением комплексного анализа. Если вы можете подключиться изначально, то все данные из Clickhouse должны быть перенесены в экстракт.

Пользовательский SQL, вероятно, устранит любую проблему с синтаксисом соединения, поскольку запрос и любые объединения написаны исключительно вами. После первоначального подключения к ClickHouse вместо выбора таблицы выберите «Custom ODBC» и напишите запрос, который вернет объединенные таблицы по вашему выбору.

Наконец, Форум идей Tableau - это место, где можно спросить и / или проголосовать за предстоящие коннекторы. Я вижу, что уже существует идея для ClickHouse. Не стесняйтесь голосовать.

person MonteCarloSims    schedule 07.04.2019
comment
Удачи здесь? Если да, проголосуйте за и поставьте зеленую галочку / галочку. Если вам удалось решить самостоятельно, разместите ответ на свой вопрос. Мне любопытно, если / как вы это решили. - person MonteCarloSims; 18.04.2019

Если вы можете убедиться, что в данных нет никаких значений NULL, вы также можете использовать этот прокси, который я написал для этой точной проблемы.

https://github.com/kfzteile24/clickhouse-proxy

В большинстве случаев это работало, но не пуленепробиваемое.

person AlexanderMP    schedule 20.10.2019