2015-04-30 4 views
1

В соответствии с таблицей существует способ оптимизации запроса R. Обращаясь к разделению данных: http://kb.tableau.com/articles/knowledgebase/r-implementation-notesТабличка обертывания R Звонки

Решение для меня непонятно. Кто-нибудь знает об этом, так как мне бы хотелось посмотреть, как это работает.

ответ

2

Рекомендация состоит в том, чтобы передавать значения в виде вектора (столбец/строку в таблице) вместо одной ячейки, чтобы уменьшить количество RServe звонки. Если ваша таблица в Таблице структурирована для выполнения расчетов по ячейкам, каждая ячейка становится разделом. Чтобы вычислить результат вычисления, который будет применяться ко всему столбцу, Tableau вызывает Rserve для каждой ячейки.

Вот что происходит (с official documentation):

Если расчеты таблиц устанавливаются Cell, Tableau делает один вызов Rserve в раздел:

enter image description here

клеток

Этот параметр устанавливает адресацию в отдельные ячейки в таблице. Все поля становятся полями разметки. Эта опция обычно больше полезна при вычислении процента общего расчета.

Вместо вызова для каждой строки/столбца:

enter image description here

enter image description here

Оптимизация сценариев R

SCRIPT_ функции в Tableau являются расчеты табличные функции, так применяются концепции адресации и разделения. Tableau делает один звонок до Rserve на раздел. Поскольку подключение к Rserve связано с некоторыми служебными данными , попробуйте передать значения как векторы, а не как индивидуальные значения , когда это возможно. Например, если вы установили адресацию на ячейку (т. Е. Set Calculate the difference в диалоговом окне «Расчет таблицы »), Tableau сделает отдельный вызов в строке до Rserve; в зависимости от размера данных, это может привести к очень большому количеству индивидуальных вызовов Rserve. Если вместо этого вы используете столбец , который идентифицирует каждую строку, которую вы будете использовать на уровне детализации, то может «вычислить вдоль» этого столбца, чтобы Tableau мог передавать значения за один раз.

+0

Благодаря @Steven это хороший ответ. Я использовал «вычислить», что улучшило количество вызовов. Но самое главное я обнаружил, что если у вас есть несколько экземпляров «rserve», работающих в любой момент времени, это вызовет серьезные задержки. Если все остальное не удается, убедитесь, что выполняется только один экземпляр rserve (ctrl + alt + del-task manager-процессы). Если выполняется несколько процессов, остановите их и запустите один –