Почему мой пользовательский запрос SQL (который отлично работает за пределами Tableau) не работает в Tableau?

Мой запрос ниже отлично работает в клиенте mysql (Heidi), но ошибки в Tableau. Я смотрел здесь и на сайте сообщества Tableau, и единственное предложение, которое я вижу, - убрать точку с запятой. Я пробовал это безрезультатно. Я прекрасно подключился к своей базе данных через Tableau - я могу видеть, как таблицы и другие запросы выполняются без проблем. Есть идеи, в чем может быть проблема? Я использую Tableau 8.2. Спасибо!

SET @sql=NULL;

SELECT
Group_Concat(Distinct CONCAT(
'MAX(IF(wsd.cid = ''', wc.cid, ''', wsd.data, NULL)) AS    ''',wc.name,'',''''))
INTO @sql
FROM webform_component wc
WHERE wc.nid = 107;

SET @sql = Concat('SELECT wsd.sid,',@sql,'
FROM webform_submitted_data wsd
LEFT Join webform_component AS wc ON wsd.cid=wc.cid
WHERE wsd.nid = 107 AND wsd.sid >= 14967
GROUP BY wsd.sid');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 

person Jason Hahn    schedule 27.03.2015    source источник
comment
Какую ошибку вы получаете?   -  person vizyourdata    schedule 29.03.2015
comment
Почему у вас нет вышеупомянутой внутренней хранимой процедуры на сервере SQL, а затем вы не вызываете хранимую процедуру из таблицы? Я использую этот метод для более сложных запросов, но в основном использую MS SQL Server.   -  person al_the_man    schedule 04.04.2015


Ответы (3)


Оказывается, Tableau SQL не поддерживает этот тип запросов при подключении к базе данных mySQL. Я получил рекомендацию попробовать переформатировать это как вложенный подзапрос.

Это ответ, который я получил от менеджера программы в Tableau, когда спросил, возможно ли использование вышеуказанного запроса:

"Вы не можете. Это должен быть единственный запрос, который возвращает набор результатов. Tableau обернет пользовательский запрос SQL как подзапрос. Если ваш SQL не может быть обработан таким образом, вы получите ошибки.

Мы поддерживаем эту структуру в источниках данных, которые мы поддерживаем «начальный SQL». Например Терадата, Астра ...

Он позволяет запускать любой SQL заранее, создавать временные таблицы и т. Д., Поэтому он называется начальным SQL.

Затем вы можете написать запрос как часть соединения, который будет оцениваться после «начального SQL» и воспользоваться преимуществами объектов, созданных на начальном этапе SQL ».

person Jason Hahn    schedule 01.04.2015
comment
Если вы хотите побудить Tableau добавить функцию Initial SQL для MySQL, как они это делают для других баз данных, проголосуйте за следующую идею на своем сайте community.tableau.com/ideas/4491 - person Alex Blakemore; 03.04.2015

У меня тоже была проблема с настраиваемыми запросами. Я мог подключиться к базе данных и использовать графический интерфейс для ввода данных, но я не мог написать собственный запрос.

Для меня было достаточно загрузки драйверов mysql.

Я также прочитал, что вам следует загрузить версии 3.51 и 5.X и используйте 32-битные версии каждого, даже если вы используете 64-битный Tableau

person vizyourdata    schedule 29.03.2015

Я столкнулся с аналогичной ситуацией с пользовательским SQL-запросом. У меня была панель инструментов, разработанная с пользовательским SQL-запросом, подключающимся к базе данных с фильтром идентификатора программы - «SQL-запрос, где идентификатор программы = 222». Мне нужно было воспроизвести ту же панель для другой программы «SQL Query where program id = 333». Запрос изначально не работал с обновлением источника данных.

Решение - если вы работаете с экстрактом, измените соединение обратно на "живое", создайте новый экстракт.

person Abirami_Jothi    schedule 14.09.2017