Как передать вектор из таблицы в R - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно передать вектор аргументов Rserve из таблицы.В частности, я использую расчеты IRR в R (на Rserve) и хочу передать вектор денежных потоков, которые являются столбцами в моей таблице (вместо строк / меры).Итак, я хочу собрать все эти CF в векторе и передать их Rserve.Передача их по одному замедляет IO.

SCRIPT_REAL ("r_func (c (.arg1, .arg2, .arg3))", сумма (cf1), сумма (cf2), сумма (cf3))

cf1..cfnденежные потоки, соответствующие различным периодам.Вышеприведенный код хорошо работает, когда cf немного, но занимает много времени, когда у меня мало людей.Кроме того, время, затраченное не на расчет, а на ввод-вывод при взаимодействии с удаленным Rserve.Если у меня есть локальный Rserve, этот расчет происходит менее чем за несколько секунд, в то время как на удаленном компьютере он занимает более минуты.

Кроме того, хочу указать на эту таблицу / Rserve, установить один аргумент за другим, и это занимает время,Я ожидаю, что когда у меня будет вектор, это будет всего лишь 1 передача и установка аргументов, и поэтому это должно ускорить

1 Ответ

1 голос
/ 11 июня 2019

Первый шаг в понимании того, как Tableau взаимодействует с R или Python, - это понимание того, как работают таблицы Tablecs.

Табличные функции Script_XXX () являются табличными вычислениями, что означает, что вы вызываете их для вектора совокупных результатов запроса, и соответствующий код R или Python должен возвращать вектор обычно такой же размер. (Я думаю, что вы можете вернуть скалярный или меньший вектор, который будет реплицирован, чтобы он выглядел как вектор того же размера, что и аргумент - но не уверен)

Вы можете контролировать, как ваши данные разбиваются на векторы, а также упорядочивать данные в векторах, редактируя таблицу calc, чтобы указать разбиение и адресацию для этого вычисления .

Секционирование определяет, как ваши сводные результаты запроса разбиваются на векторы для целей расчета. Адресация определяет, как упорядочены элементы каждого вектора. Вы можете сделать это на основе физического расположения структуры таблицы или (лучше) на основе конкретных измерений.

См. Интерактивную справку Tableau для таблиц calcs для получения дополнительной информации и просмотра обучающих видео в Интернете из таблиц или записей в блогах (особенно от любого по имени Bora)

Один из способов проверить ваше понимание этих концепций - создать таблицу Tableau (то есть текст с типом пометки) с несколькими измерениями на полках строк и столбцов. Затем создайте вычисляемые поля для INDEX () и SIZE () и отобразите их в тексте. Наконец, измените разделение и адресацию различными способами, отредактировав эти таблицы. Попробуйте несколько разных перестановок. Когда вы можете с уверенностью предсказать, что эти функции произведут для различных настроек, тогда вы будете готовы выполнять более сложные задачи, такие как разговор с R.

Также полезно поэкспериментировать с FIRST (), LAST (), LOOKUP (), WINDOW_SUM () и т. Д. - и, наконец, покопаться в PREVIOUS_VALUE (). Предупреждение, PREVIOUS_VALUE () немного странно и ведет себя не так, как вы, вероятно, предполагаете. Тем не менее, это полезный метод, который может реализовывать рекурсивные вычисления и примерно такой же близкий к циклу for, как получает Tableau.

...