Ошибка Vertica-Tableau Несколько команд не могут быть активны

У нас есть набор данных в Vertica, и Tableau запрашивает данные (4 миллиарда записей) из Vertica для панели инструментов, как показано ниже:

Панель управления Tableau

Все списки и графики представляют собой отдельные рабочие листы в таблице и используют одно и то же соединение с БД Vertica. Каждый список представляет собой столбец в базе данных, а список - это количество элементов в соответствующем столбце набора данных в убывающем порядке. График такой же, как и список, но рассчитывается немного иначе. Дата начала и Дата окончания - это диапазон дат для запроса данных, таких как фильтр подключения к данным, который ограничит запрос фиксированным объемом данных, например, за прошлую неделю, последний месяц и т. Д.

Но я получаю ОШИБКУ:

Vertica] [VerticaDSII] (10) Ошибка при подготовке запроса: несколько команд не могут быть активны в одном соединении. Рассмотрите возможность увеличения ResultBufferSize или получения всех результатов перед запуском другой команды.

Есть ли способ обхода этой проблемы или лучший способ сделать это


person roy    schedule 03.07.2014    source источник
comment
Просто мысль: если не ошибаюсь, tableau использует ODBC, а в конфигурации ODBC есть параметр Threading (по крайней мере, под Linux). Если он существует, может ли это помочь его установить?   -  person Guillaume    schedule 04.07.2014
comment
Я не уверен, я понял, что если подключение к данным не указано в собственных подключениях tableau, мы можем использовать ODBC для подключения хранилища данных SQL. Пожалуйста, поправьте меня, если я ошибся. Но позвольте мне попробовать и это, как упомянула она [ссылка] (kb.tableausoftware. ru / article / knowledgebase /)   -  person roy    schedule 04.07.2014
comment
Любая помощь по этому поводу, пожалуйста?   -  person roy    schedule 14.07.2014


Ответы (2)


вам понадобится файл TDC, в котором указана конкретная опция строки подключения ODBC, чтобы обойти проблему.

Руководство Vertica заключалось в добавлении параметра ODBC Connect String со значением ResultBufferSize = 0. Это, по-видимому, заставляет буфер результатов быть неограниченным, предотвращая ошибку. Это достаточно просто сделать при создании строки подключения вручную или при работе с DSN, но Vertica - один из родных соединителей Tableau. Так как же сказать «родному» коннектору делать что-то еще со своим подключением?

Собственные соединения в Tableau можно настроить с помощью файлов TDC

«Собственные соединители» по-прежнему подключаются через драйверы ODBC поставщика и могут быть настроены так же, как подключение «Другие базы данных» / ODBC. В самих файлах TDC соединения «ODBC» называются «Generic ODBC», что является гораздо более точным способом понять разницу.

Полное руководство по настройке TDC со всеми параметрами доступно здесь, хотя это довольно подробное чтение. Одна вещь, которая не предоставляется, - это пример настройки «собственного коннектора». Базовая структура файла TDC такова.

<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class='genericodbc' enabled='true' version='7.7'>
<vendor name='' />
<driver name='' />
<customizations>

</customizations>
</connection-customization>

При использовании «Generic ODBC» классом является «genericodbc», а затем необходимо указать имя поставщика и драйвера, чтобы Tableau мог знать, когда следует применить файл TDC. Для собственного коннектора это намного проще - вы просто используете собственное имя коннектора во всех трех местах. Большой список имен родных соединителей находится в конце этой статьи. К счастью для нас, Vertica называют просто «vertica». Итак, наша структура Vertica TDC будет выглядеть так:

<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class='vertica' enabled='true' version='7.7'>
<vendor name='vertica' />
<driver name='vertica' />
<customizations>

</customizations>
</connection-customization>

Это хорошее начало, но нам нужны настоящие теги настройки, чтобы что-нибудь произошло. Согласно документации, чтобы добавить дополнительные элементы в строку подключения ODBC, мы используем тег с именем «odbc-connect-string-extras». Это будет выглядеть как

<customization name='odbc-connect-string-extras' value='ResultBufferSize=0;' />

Одна важная вещь, которую мы обнаружили, заключалась в том, что все дополнительные подключения ODBC должны быть в этом единственном теге. Поскольку мы хотели включить балансировку нагрузки в кластере Vertica, был рекомендован второй параметр: ConnectionLoadBalance = 1. Чтобы получить оба этих параметра, правильный метод:

<customization name='odbc-connect-string-extras' value='ResultBufferSize=0;ConnectionLoadBalance=1;' />

Есть целый набор других настроек, которые вы можете добавить, чтобы увидеть, как они влияют на производительность. Убедитесь, что вы понимаете формулировку параметра настройки - если он начинается с «SUPRESS», то при вводе значения «yes» функция отключится; в других случаях вы хотите установить значение «нет», чтобы отключить эту функцию. Некоторые из других, которые мы пробовали, были

<customization name='CAP_SUPPRESS_DISCOVERY_QUERIES' value='yes' />
<customization name='CAP_ODBC_METADATA_SUPPRESS_PREPARED_QUERY' value='yes' />
<customization name='CAP_ODBC_METADATA_SUPPRESS_SELECT_STAR' value='yes' />
<customization name='CAP_ODBC_METADATA_SUPPRESS_EXECUTED_QUERY' value='yes' />
<customization name='CAP_ODBC_METADATA_SUPRESS_SQLSTATISTICS_API' value='yes' />
<customization name= 'CAP_CREATE_TEMP_TABLES' value='no' />
<customization name= 'CAP_SELECT_INTO' value='no' />
<customization name= 'CAP_SELECT_TOP_INTO' value='no' />

Первый набор в основном касался уменьшения количества запросов на обнаружение метаданных, в то время как второй набор предписывал Tableau не использовать таблицы TEMP.

Лучший способ увидеть результаты этих настроек - изменить файл TDC и перезапустить Tableau Desktop. Когда вы будете удовлетворены изменениями, переместите файл TDC на свой сервер Tableau и перезапустите его.

Куда поместить файлы TDC

Согласно документации »

Для Tableau Desktop в Windows: Documents \ My Tableau Repository \ Datasources Для Tableau Server: Program Files \ Tableau \ Tableau Server \\ bin Примечание. Файл должен быть сохранен с использованием расширения .tdc, но имя не имеет значения ».

Если вы используете кластер Tableau Server, файл .tdc необходимо разместить на каждом рабочем узле в папке bin, чтобы процесс vizqlserver мог его найти. Я также выделил самую большую проблему из всех - вы должны редактировать их с помощью настоящего текстового редактора, такого как Notepad ++ или SublimeText, а не Notepad, потому что Notepad любит сохранять вещи со скрытым окончанием .TXT, а файл TDC будет распознан только в том случае, если окончание действительно .tdc, а не .tdc.txt.

person Karthik Venkatraman    schedule 21.11.2015

Перезапуск таблицы решил мою проблему, которая давала ту же ошибку.

person santhosh    schedule 12.05.2015