Рубрики
Без рубрики

Выполнить Python из Cableau с помощью Tabpy

Вы пытаетесь понять, как позвонить в Python Code из Tableau? Может быть, вы пробовали другие онлайн-ресурсы, но бежали в расстраивающие ошибки. Этот учебник Tabpy покажет вам, как получить установленную и настройку TabPy, и вы получите работу Python Code в Tableau. https://youtu.be/orejxfnjtz0 Установка Dateau Desktop Если вам нужна Desktop Tableau, … Выполнить Python из Tableau с Taby Read More »

Автор оригинала: Lukas Halim.

Вы пытаетесь понять, как позвонить в Python Code из Tableau? Может быть, вы пробовали другие онлайн-ресурсы, но бежали в расстраивающие ошибки. Этот учебник Tabpy покажет вам, как получить установленную и настройку TabPy, и вы получите работу Python Code в Tableau.

Установка Desktop Tableau

Если вам нужна таблица Desktop, вы можете получить 14-дневную эксплуатацию здесь: https://www.tableau.com/products/desktop/download.

Примечание : Tableau Public, бесплатная лицензионная версия Tableau, не Поддержка интеграции Python.

Установка в таблице

Чтение документации, это должно быть так же просто, как:

pip install tabpy

Возможно, это будет все, что вам нужно получить установленную таблицу. Но когда я попробовал установку не удалось. Это было связано с невозможностью установки на одну из зависимостей, пакет Python под названием Twist. Поиски на StackoverFlow приводит к этому решению ( https://stackoverflow.com/questions/36279141/pip-doesnt-install-twisted-snt-install-twisted-on-windows ) И к этому неофициальному двоичному двоину Windows доступно ( http: http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted ). Я загрузил подходящий двоичный файл для моей версии Python, навигации к каталогу загрузки и установлен с этой командой:

pip install Twisted-20.3.0-cp38-cp38-win_amd64.whl

Этот установленный поворот, и я тогда смог установить Tabpy, как ожидалось.

Tabpy Setup.

С установленным файлом, запуск сервера Tabpy можно сделать из командной строки:

TabPy

Вы должны увидеть сообщение, как приведенный ниже, сообщая вам, что веб-сервис прослушивает порт 9004:

С помощью Tabpy работает, начните Desktop.

В Desktop, нажмите Помогите на панели инструментов, то Настройки и производительность> Управление подключением расширения аналитики Отказ

Затем выберите TABPY/внешний API, выберите Localhost для сервера и установите порт до 9004

Примеры Tabpy

Первый пример показывает, как использовать функцию numpy на агрегированные данные для расчета коэффициента корреляции Пирсона.

Второй пример показывает, как использовать развернутую функцию TABPY для выполнения T-тестирования на дезагрегированные данные.

Пример – корреляция на агрегированных данных

У нас есть настраиваемое расширение аналитики Tabpy и Cableau. Теперь мы позвоним в Python Code из Tableau.

Скачанные данные о заработной плате и образовании молодых мужчин ( https://vincentarelbundock.github.io/rdatasets/csv/ecdat/males.csv ) и открываются, используя параметр Connect к текстовой файле.

Выберите лист1, чтобы начать новый лист.

Maried написан без второго «R», поэтому щелкните правой кнопкой мыши на поле и переименуйте его «женат».

Перетащите «Женат» и «Опыт» на полку ряд и дважды щелкнули эксперимента и заработная плата:

Далее измените сумму (эксперимента) в avg (эксперимента) и сумма (заработная плата) в avg (эксперимента):

Вид теперь должен выглядеть так:

Теперь давайте добавим расчет с каким-нибудь кодом Python! Вы можете создать расчет, нажав на вкладку «Анализ» на панели инструментов, а затем «Создать вычисленное поле»

Вызовите расчет «CROR CREAT» и используйте это выражение:

SCRIPT_REAL("import numpy as np
print(f'arg1_: {_arg1}')
print(f'arg2_: {_arg2}')
print(f'return: {np.corrcoef(_arg1,_arg2)[0,1]}')
return np.corrcoef(_arg1,_arg2)[0,1]",avg([Exper]),avg([Wage])
)

Отпечатки печати позволяют нам увидеть обмен данными между Tableau и сервером TabPy. Переключитесь в командную строку, чтобы увидеть:

Tableau отправляет два Списки , _arg1 и _arg2 к серверу Tabpy. _arg1 это список со значениями из AVG ([Эксперт]) и _arg2 это список со значениями из AVG ([заработная плата]) Отказ

Taby возвращает одно значение, представляющее корреляцию AVG ([Эксперт]) и AVG ([заработная плата]) Отказ

Мы возвращаемся NP.corrcoef (_ARG1, _ARG2) [0,1] вместо того, чтобы просто np.corrcoef (_ARG1, _ARG2) потому что np.corrcoef (_ARG1, _ARG2) Возвращает 2 × 2 корреляционную матрицу, но Tableau ожидает либо одно значение, либо список значений с одинаковой длиной, что и _arg1 и _arg2 Отказ Если мы вернем Matrix 2 × 2, Tableau даст нам сообщение об ошибке, «Типеррера: объект типа NDARRay не Json Serializable»

Функции, используемые для связи с сервером TabPy, Script_real, script_int, script_bool и Script_str являются «таблицами расчеты», что означает, что входные параметры должны быть агрегированы. Например, AVG ([Эксперт]) является приемлемым параметром, но [ЭкСУЖС] не является. Расчеты таблиц работают не на данных в базовом наборе данных ( Males.csv Для этого примера) но на значениях, агрегированных на уровне, показанном на листе таблицы. Tableau отправляет списки TabPy с агрегированными значениями.

Мы используем Script_real а не один из других Script_ * функции, потому что наша функция вернет плавать Отказ Если, например, функция была вместо этого, возвращая строку, мы бы использовали Script_str Отказ

Один вызов изготовлен из Tableau для Tabpy для каждого раздела в расчете таблицы. По умолчанию таблица (вниз), которая использует один раздел для всей таблицы:

Мы можем изменить раздел, выбрав редактирование, а затем расчет таблицы:

В настоящее время расчет таблицы вычисляется с помощью таблицы (вниз), что означает, что Tableau снижает все строки в таблице. Вы можете увидеть, что все значения выделены желтым цветом.

Если мы изменим из таблицы (вниз) к панели (вниз), расчет таблицы будет выполняться отдельно для каждой панели. Ряды стола разделены на две панели – один и другой для. Поэтому есть два отдельных вызова в Tabpy, один для Meried No и секунды для Mared = Да Отказ Каждый звонок получает отдельный ответ.

Мы можем увидеть обмен данными, переключившись в командную строку:

Отпечатки печати показывают, что происходит. Первый вызов tabpy представляет раздел где. Списки отправляются со средней заработной платой и значениями опыта, и возвращаемое значение составляет -0,3382. Второй вызов представляет раздел, в котором связанные средние значения заработной платы и опыта отправляются, а функция возвращает -0,0120. Tableau отображает результаты.

Мы позвонили в Python Code из Tableau и использовали результаты в нашем листе. Отлично!

Но мы могли бы сделать то же самое гораздо легче без Python с помощью Tableau’s Window_corr Функция:

Мы можем добавить это на вид и увидеть, что это дает Те же результаты Используя либо таблицу (Down), либо панель (вниз):

Этот пример отлично подходит для понимания Tabpy. Но нам не нужно использовать Python для расчета корреляции, поскольку Python уже имеет встроенный Window_Corr.

Пример – данные с разбивкой с двумя образцами

Если наши данные представляют собой образец общего мужского населения, то мы можем использовать статистику, чтобы сделать выводы о населении на основе нашего образца. Например, мы могли бы захотеть спросить, дает ли наш образец доказательств того, что мужчины в целом населения, которые объединяются, имеют больше опыта, чем те, кто нет. Тест для этого – T-тест с двумя образцами. Вы можете узнать больше об этом здесь: ( https://en.wikipedia.org/wiki/two-sample_hypotheaseis_testing ).

В отличие от корреляции, Tableau не имеет встроенного T-теста. Таким образом, мы будем использовать Python, чтобы сделать T-тест.

Но сначала мы создадим новый рабочий лист. Документация здесь ( https://github.com/tableau/tabpy/blob/master/docs/tabpy-tools.md#t-test ) Объясняет то, что нам нужно передать в функцию T-Test. Нам нужно пройти _arg1 с годы опыта и _arg2 в качестве категориальной переменной, которая отображает каждое наблюдение в образец1), либо образец2).

Давайте начнем с создания нового представления с Union на рядной полке и Avg (эксперимента) На полке колонны:

Разбиение мер по отсоединению:

С совокупными мерами не проверяют, Avg (эксперимента) следует изменить на Эксперимент Отказ Используйте меню «Показать мне», чтобы изменить на график коробки и усы:

Наш взгляд устанавливается, за исключением T-теста. T-Test является одним из моделей, включенных в Tabpy, пояснил здесь ( https://github.com/tableau/tabpy/blob/master/docs/tabpy-tools.md#prdedpled-functions ). Нам нужно запустить команду, прежде чем мы сможем запустить T-тесты. С запущенным сервером Tabpy, откройте Второй Командная строка введите следующую команду:

tabpy-deploy-models

Вы должны увидеть такое результат:

Если это успешно, теперь вы можете позвонить в Anova, PCA, анализ настроений и T-тестов из Tableau!

Создайте новый расчет, «Union Expeat TTEST», который будет определять, существует ли статистически значимая разница в среднем опыте профсоюзного по сравнению с несофилизированным.

SCRIPT_REAL("print(f'unique values: {len(set(_arg2))}')
return tabpy.query('ttest',_arg1,_arg2)['response']"
,avg([Exper]),attr([Union]))

Потому что Script_real Это расчет таблицы параметры должны быть агрегированы (с использованием AVG и ATTR), но с помощью «Совокупные меры» не проверяют представление, показывает индивидуальные наблюдения от Males.csv В любом случае, отдельные значения передаются в Tabpy.

Перетащите новый расчет на всплывающую подсказку, чтобы показать его в поле зрения:

T-Test возвращает значение P-0,4320. Мы можем интерпретировать это, чтобы означать, что мы не находим доказательств для разницы в среднем многолетнем опыте для профсоюзных соревнований по сравнению с профсоюзными мужчинами. Средний опыт в наших примерных данных различен для объединения мужчин по сравнению с несофилизированными мужчинами, но потому что P-значение высока, у нас нет доказательств разницы в целом населения ..

Tableau не имеет встроенного T-Test, но мы добавили его с помощью Python!

Поиск проблемы

Вы очень, вероятно, столкнулись с ошибками при настройке расчетов с помощью Tabpy. Вот пример. Если мы попробуем переключить расчет таблицы из таблицы (вниз) в ячейку, мы получаем это сообщение:

_arg1 и _arg2 Списки, так в чем проблема? Сообщение об ошибке мы видим в Tableau, не помогает нам точно определить проблему. Если мы переключаемся в командную строку, мы можем увидеть трассировку стека:

Трассировка стека говорит нам, что линия 34 бросает ошибку. Мы можем посмотреть на Ttest.py код здесь https://github.com/tableau/tabpy/blob/master/tabpy/models/scripts/ttest.py Чтобы лучше понять ошибку.

Проблема в том, что если мы выполняем T-тест с двумя образцами, мы можем сделать это одним из двух способов:

  1. Отправить _arg1 и _arg2 как два разных образца. Например, _arg1 может быть [1, 4, 1] и _arg2 быть [3, 4, 5] Отказ
  2. Отправьте оба образца в _arg1 и использовать _arg2 Указать, какой образец каждое наблюдение должно быть включено. Например, _arg1 может быть [1, 4, 1, 3, 4, 5] и _arg2 быть [«Да», «Да», «Да», «Нет», «Нет», «Нет»] Отказ

Когда расчет таблицы был установлен на использование таблицы (вниз), _arg2 было как ценность Союз = нет и Союз = Да , но теперь, когда мы используем ячейку, у нас есть Два Звонки в Tabpy, один для Союз = нет и секунду за Союз = Да Отказ Вместо отправки _arg1 = [1, 2, 1, 5, 3, 4, 5, 1] _arg2 = [«Да», «Да», «Да», «Нет», «Нет», «Нет»] мы отправляем _arg1 = [1, 4, 1] и _arg2 = [«Да», «Да», «Да»] с одним звонком в Tabpy, а затем сделать второй звонок с _arg1 = [4, 5, 1] и _arg2 = [«Нет», «Нет», «Нет»] Отказ В результате в Ttest.py Лен (набор (_ARG2)) Оценивается до false, и мы в конечном итоге в строке 34, что бросает ошибку.

Мы можем устранить неполадки подобные ошибки, проверив командную строку, чтобы найти сообщение об ошибке и номер строки, который бросает ошибку.