Size: a a a

2019 May 22

EL

Egor Larin in Чат Tableau
Запрос только переписав можно упростить через custom sql
источник

EL

Egor Larin in Чат Tableau
А в самой бд этот запрос как отрабатывается? Ну в бд студии?
источник

EL

Egor Larin in Чат Tableau
Я бы посмотрел что именно генерит такие вычисления. И упростить логику на уровне воркбука
источник

EL

Egor Larin in Чат Tableau
Aleksandr Ignatyev
Коллеги, добрый день.
Есть немного дикий вопрос:

Мы Лайвом подключаемся к бд. При этом прогрузка собранных отчетов занимает приличное время (порядка минуты).
Достали запросы, которые генерит Табло и отсылает в бд. Там используется cursor.
При этом в этом бд cursor обрабатывает один оптимизатор запросов, который очень проблематично реагирует на запросы с distinct.

Соответственно вопрос: можно ли в Табло как-то изменять вид запросов на бд при лайв коннекте?
А сколько у вас фильтров? Обычно именно фильтры дистинкты достают
источник

AV

Alexander Varlamov in Чат Tableau
Aleksandr Ignatyev
Коллеги, добрый день.
Есть немного дикий вопрос:

Мы Лайвом подключаемся к бд. При этом прогрузка собранных отчетов занимает приличное время (порядка минуты).
Достали запросы, которые генерит Табло и отсылает в бд. Там используется cursor.
При этом в этом бд cursor обрабатывает один оптимизатор запросов, который очень проблематично реагирует на запросы с distinct.

Соответственно вопрос: можно ли в Табло как-то изменять вид запросов на бд при лайв коннекте?
Табло по умолчанию использует FETCH=10000, то есть, за одну сессию при подключении к БД при объявлении курсора выгружается 10000 строк, здесь теряется много времени на подключения между сессиями и база ждет, когда табло запросит очередные 10000 строк (вы видите запросы типа fetch 10000 in "SQL_CUR2". Конструкция DECLARE CURSOR/ FETCH плохо работает с несколькими джойнами и динстинктами. Можно отключить объявление курсора в xml самого воркбука в строке <connection class= ... 'odbc-connect-string-extras' (для разных типов источников разные строки будут) в '' прописать либо 'FETCH=100000' (увеличить на порядок или два) либо 'UseDeclareFetch=0', тогда вы будете ходить в БД чистыми запросами. Отключение fetch чревато тем, что если вы попытаетесь чистым запросом загрузить данных больше, чем память машины, то табло будет писать, что запрос идет, а БД будет ждать, когда освободится память для всех этих данных (а она никогда не освободится), потом все отвалится по таймауту либо базы либо двухчасовому дефолтному таймауту  табло.
Если увеличиваете fetch, посмотрите, сколько занимает сериализованный курсор в БД.
Редактирование xml работает (не только для этого случая), но оно не поддерживается компанией
Это все также работает и для экстрактов (у меня время снижалось с часа до 4х минут на локальном компьютере)
Есть еще возможность изменения глобальных настроек самого сервера, но лучше этого не делать, потому что ширина таблиц разная (для одной памяти хватит, для другой-нет).
Вопрос, кстати, не дикий ))
источник

AV

Alexander Varlamov in Чат Tableau
Здесь опции для Redshift. Для Postgress тоже работает. На других источниках не делал, если у вас источник другой, посмотрите опции драйвера для него, которые отвечают за fetch
источник

EL

Egor Larin in Чат Tableau
Alexander Varlamov
Табло по умолчанию использует FETCH=10000, то есть, за одну сессию при подключении к БД при объявлении курсора выгружается 10000 строк, здесь теряется много времени на подключения между сессиями и база ждет, когда табло запросит очередные 10000 строк (вы видите запросы типа fetch 10000 in "SQL_CUR2". Конструкция DECLARE CURSOR/ FETCH плохо работает с несколькими джойнами и динстинктами. Можно отключить объявление курсора в xml самого воркбука в строке <connection class= ... 'odbc-connect-string-extras' (для разных типов источников разные строки будут) в '' прописать либо 'FETCH=100000' (увеличить на порядок или два) либо 'UseDeclareFetch=0', тогда вы будете ходить в БД чистыми запросами. Отключение fetch чревато тем, что если вы попытаетесь чистым запросом загрузить данных больше, чем память машины, то табло будет писать, что запрос идет, а БД будет ждать, когда освободится память для всех этих данных (а она никогда не освободится), потом все отвалится по таймауту либо базы либо двухчасовому дефолтному таймауту  табло.
Если увеличиваете fetch, посмотрите, сколько занимает сериализованный курсор в БД.
Редактирование xml работает (не только для этого случая), но оно не поддерживается компанией
Это все также работает и для экстрактов (у меня время снижалось с часа до 4х минут на локальном компьютере)
Есть еще возможность изменения глобальных настроек самого сервера, но лучше этого не делать, потому что ширина таблиц разная (для одной памяти хватит, для другой-нет).
Вопрос, кстати, не дикий ))
Класс
источник

AV

Alexander Varlamov in Чат Tableau
Egor Larin
Класс
Мне на этот вопрос не смогли ответить, пришлось разбираться самим ))
источник

EL

Egor Larin in Чат Tableau
Ну знаете
источник

EL

Egor Larin in Чат Tableau
Это ж поведение бд
источник

VM

Vladimir Martynenko in Чат Tableau
Alexander Varlamov
Здесь опции для Redshift. Для Postgress тоже работает. На других источниках не делал, если у вас источник другой, посмотрите опции драйвера для него, которые отвечают за fetch
С Oracle не приходилось разбираться? Параметр Fetch смотреть внутри tdsx?
источник

AV

Alexander Varlamov in Чат Tableau
eolay
Кстати про gauge chart (спидометры) и SCADA-системы (системы мониторинга и управления в автоматизации).
Если вам интересно:
Узнала еще одну сферу, где gauge chart применяется (кроме автопрома). На больших информационных видео-стенах на энергетических объектах (например, ТЭЦ, ГЭС). Там, где нужно следить за мощностью агрегата, в основном.
Причем, SCADA-программисты не сильно любят такой элемент визуализации, но там его всегда добавляют, потому что заказчик просит. Возможно, это исторически сложилось, или люди там в принципе привычные больше к аналоговым щитовым приборам (энергетика же). Но вот такая узкая сфера применения. Я это знаю от SCADA-программистов собственно - т.к. скада - та же визуализация данных - зашборды энергетические и процессные часто схожи по принципам с бизнес-дашбордами.
Жаль, у конечных пользователей поспрашивать не удалось, почему им так нужен именно такой вид.
Вообще, посмотреть на скады с точки зрения визуализации данных очень интересно - там есть свои традиции и особенности. И с принципами эргономики / цветообозначения там ошибаться нельзя - процессы и объекты часто повышенной опасности. Некорректно представленные данные могут повлечь за собой серьезные последствия.
Еще из интересного - на разных объектах сочетания красного/зеленого на элементов может быть диаметрально противоположным. Зеленым обычно отмечается то состояние элемента, которое безопасно. А красным - соответственно - опасное. В одном случае рабочий элемент будет красным, а в другом - зеленым. Смотря когда безопаснее, когда работает он (открыт) или когда выключен (закрыт). Такие цветовые кодировки часто отдельно согласуются между исполнителями и эксплуатацией. Потому что опять же, аварийная сигнализация - это дело важное.
Никто тут не имел дело со СКАДой? Не изучал ее как вид визуализации данных?
(картинка с интернета для примера)
Был инструктором DCS/PLC в нефтегазе. Первую распределенную систему управления предложил Honeywell (TDC 2000) в 70х, там уже были барчарты )) Gauge charts просят потому что привычнее, pressure gauges (манометры) просто с трубкой Бурдона, особенно там, где электричество использовать нельзя. Все что показывают мониторы в операторной, отражает техпроцессы, именно их надо знать и P&ID, а как это отображается - это не самое главное, тем более, на это стандарты есть и правила

https://pdf.sciencedirectassets.com/314898/1-s2.0-S1474667078X74738/1-s2.0-S1474667017662049/main.pdf?x-amz-security-token=AgoJb3JpZ2luX2VjEKP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJGMEQCIDKhDRUxf%2Fj9ekKW3cxMYej3ha2YoL1ojj74bEgacJHIAiA%2BIAB46%2FHJNHH5bJCULYBeXt8HLYasbP14ZG5zei6upyrjAwir%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAIaDDA1OTAwMzU0Njg2NSIMLcjgPWDTfs4HInr1KrcD5l%2BrOGlWlf4nharE2dkPFLXNIwbd4LOCDVJKv4Flej%2BLF2Ma1bgrzxTRuWiMABnSeWm8YzH5zfZXLwT5BxKIUILYYvJIMGcPIp4JggZq%2FYsFKY6%2B%2F2HzefK41daboeGiQEK4Wszj5QmNJlWMoYNxmpVpQ8b6BwFnw4epHXWUdSiHvLKG7uSmoRi2IWw4GNX5ZmXJ860mcg2r36qDbmOtnCu64sQ0TqPlU96msF%2BTqaWhDpPXVVK%2Byxv0XJBcoyui28RTQLkHKydmjuTie65yhM5cdE8nDihNMxs7%2BJmcaTG7qRGj3KwLrEnUj1ATHZH5d%2BIrHnBl5PqAbQ8DvLNALs8p0Xgc1es0UyZb0qPSqyEbIZo6XE2xPazzA16sH1OWelR3J2lBPukWCU1wIM1sPfMc99e4ryYpI61IEC1IZ0wnEKP9l%2Fs5tIoTYSak4mzqn3c%2FD4L373bYLalWu4EvtSvm1lTtULcnfgJcfMZcUQoqMsdFhrEC33PsJACxYIL8CuPiXOrJMeOuy6V1UM5%2B6TH7H7EbwrsY%2B3aUeAWtUEfmFS2E%2FdkOOIiX9KszN%2FZ%2FnswF2rJ8dTCrpJbnBTq1AcTHTR1LhtctIVH6xqs1WyMT5%2FgGMRYazuJIOPyFqHrvhSJ3MCzcQUEtipHwBiDCyhiVESejUAk1TFHSrfoAS0RAff45XHaUjeOT6THx1WBkTOTdsU9kqhUYCFLisu8Gnr2uPOYrcs7RO6wol3DwrSKFnn1HIipZ%2FPldXDPzzzqtTzApRkHMcZmlhiL%2FhcGAEHG57x7lt%2FrsYgOgYyPVo4Yc2DMGou4LbX7qgIIOotgY8zKcjkg%3D&AWSAccessKeyId=ASIAQ3PHCVTYV4EED45E&Expires=1558554298&Signature=Rnf2HX2ySAk3rpHjPfNjUw4VCqI%3D&hash=ed031442de05ba7944c0af159a5b297c07117e09f9ce75ca283442187fea2fad&host=68042c943591013ac2b2430a89b270f6af2c76d8dfd086a07176afe7c76c2c61&pii=S1474667017662049&tid=spdf-45f63002-65e4-4e7c-bc4e-d86a919cb6d9&sid=e3c0dc1a292c18447309f4a330273ed2c4bcgxrqb&type=client
источник

AV

Alexander Varlamov in Чат Tableau
Vladimir Martynenko
С Oracle не приходилось разбираться? Параметр Fetch смотреть внутри tdsx?
С ораклом не работал. Надо открыть сам воркбук twb (это xml) в редакторе
источник

VM

Vladimir Martynenko in Чат Tableau
Меня интересует возможность ускорения создания экстрактов из Oracle. Мы тестировали, экстракт с теми же данными из ms sql создаётся в 2 раза быстрее. Но наше КХД на oracle
источник

AV

Alexander Varlamov in Чат Tableau
Fetch Buffer Size - The amount of memory used to determine how many rows of data the ODBC Driver prefetches at a time from an Oracle database regardless of the number of rows the application program requests in a single query. However, the number of prefetched rows depends on the width and number of columns specified in a single query. Applications that typically fetch fewer than 20 rows of data at a time improve their response time, particularly over slow network connections or to heavily loaded servers. Setting Fetch Buffer Size too high can make response time worse or consume large amounts of memory.
источник

AV

Alexander Varlamov in Чат Tableau
источник

AV

Alexander Varlamov in Чат Tableau
Я бы попробовал Fetch Buffer Size прописать в воркбуке и посмотреть, что получится. Повторюсь, что это само табло официально не поддерживает такие решения, поэтому только под вашу ответственность такие экмперименты
источник

VM

Vladimir Martynenko in Чат Tableau
Посмотрел, в xml внутри tdsx нет параметра fetch
источник

AV

Alexander Varlamov in Чат Tableau
В строке  <connection class=  что написано?
источник

VM

Vladimir Martynenko in Чат Tableau
federated
источник