舉個例子!Tableau技巧(27):如何在Tableau中用Python(技術乾貨,建議收藏)
自從Tableau10.2發版,技術宅們欣喜若狂:Tableau中終於可以用Python啦!不過,究竟怎麼用?很多使用者就不是很清楚了。
關於Python在Tableau的用法,我查閱相關資料,找到了這篇內容完整並且滿滿乾貨的分享文章。英文原文連結接:tableau/TabPy
在這裡,我將原文做了翻譯,分享給技術達人們!
——————————————————————————————————》》
本期《舉個例子》,阿達要給大家分享的Tableau技巧是:如何在Tableau中用Python。
在Tableau中用Python,首先需要新增TabPy伺服器。TabPy伺服器是Tableau的Python整合的伺服器元件,它是一個基於Tornado和其他Python庫的Python程式。
一、在Linux / MacOS上安裝
在基於Linux的系統上,您可以使用指令碼setup.sh從頭開始安裝TabPy。
首先點選TabPy儲存庫著陸頁右上角的綠色克隆或下載按鈕並下載zip檔案。解壓縮後,導航到終端視窗中包含setup.sh的資料夾,然後鍵入./setup.sh。
在MacOSX上,您可能還需要通過鍵入以下命令來為檔案授予許可權:chmod + x setup.sh
該指令碼執行以下操作:
下載並安裝Anaconda,除非Anaconda在PATH或資料夾Anaconda在當前資料夾中找到。 Anaconda提供了一套詳盡的Python包,包括可由伺服器執行的Python程式碼使用的ML相關庫。
建立一個名為Tableau-Python-Server的Python環境(如果尚不存在)。然後指令碼啟用環境,並將伺服器資料夾新增到PYTHONPATH(這是伺服器指令碼在同一個資料夾中查詢其Python依賴項所必需的)。
將所需的Python包安裝到新環境以及客戶端軟體包中,因為它包含伺服器所依賴的常用功能。
初始化伺服器,顯示安裝位置和下次啟動服務的說明。
安裝完成後,或根據啟動伺服器的說明執行startup.sh時,應該會看到如下輸出:
INFO:__ main __:{“INFO”:“Loading state from state file”}
INFO:__ main __:{“INFO”:“Initializing tabpy”}
INFO:__ main __:{“INFO”:“Done initializing tabpy”}
INFO:__ main __:{“INFO”:“Web service listening on port 9004”}
此時,伺服器可以遠端執行Python程式碼或部署Python函式。
您可以通過終止程式來停止伺服器(例如,使用CTRL-C)。
二、在Windows上安裝
在Windows上,您可以使用指令碼setup.bat從頭開始安裝TabPy。
首先點選TabPy儲存庫著陸頁右上角的綠色克隆或下載按鈕並下載zip檔案。解壓縮後,使用Windows命令列導航到包含setup.bat的資料夾,然後鍵入setup.bat。
指令碼執行以下步驟:
下載並安裝Anaconda,在當前使用者帳戶下,例如C:\ users \ yourUserName \,除非Anaconda在PATH中或具有登錄檔項。 Anaconda提供了一套詳盡的Python包,包括可由伺服器執行的Python程式碼使用的ML相關庫。
建立一個名為Tableau-Python-Server的Python環境(如果尚不存在)。指令碼然後啟用環境。
將所需的Python包安裝到新環境以及客戶端軟體包中,因為它包含伺服器所依賴的常見功能。
初始化伺服器,顯示安裝位置和下次啟動服務的說明。
安裝完成後,或者根據啟動伺服器的說明執行startup.bat時,應該會看到如下輸出:
INFO:__ main __:{“INFO”:“Loading state from state file”}
INFO:__ main __:{“INFO”:“Initializing tabpy”}
INFO:__ main __:{“INFO”:“Done initializing tabpy”}
INFO:__ main __:{“INFO”:“Web service listening on port 9004”}
此時,伺服器可以遠端執行Python程式碼或部署Python函式。
您可以通過終止可以在Windows工作管理員中看到的python2.7程式來停止伺服器。 (按Ctrl + Shift + Esc訪問工作管理員)
三、手動安裝
如果您熟悉Python環境並且已經設定了一個,或者不喜歡使用Anaconda,並且只想啟動伺服器程式,則可以跳過安裝指令碼,安裝依賴項並直接從命令列執行該程式。手動安裝說明假定Conda或Python被定義為PATH的一部分。
它是可選的,但建議您為此專案建立一個新的Conda環境:
conda create --name Tableau-Python-Server python = 2.7 anaconda
上面的示例建立了一個Python 2.7環境,但Python 2.7+和Python 3.5+都支援Tableau Python Server。
現在啟用新建立的環境。
在Linux / MacOS上:
source Tableau-Python-Server
在Windows上:
activate Tableau-Python-Server
由於TabPy在PyPI上可用,您可以通過簡單的執行以下命令進行安裝。
pip install tabpy-server
隨著軟體包的安裝,您將看到命令列中列出的安裝位置。這些可能看起來像/Users/username/anaconda/envs/Tableau-Python-Server/lib/python2.7/site-packages或\ Users \ username \ anaconda \ envs \ Tableau-Python-Server \ lib \ site-packages,取決於你的環境。
導航到site-packages下的tabpy_server資料夾,並分別在Windows和Linux / MacOS上執行startup.bat或startup.sh。您可以指定自定義埠號作為引數。 startup.bat 9001。
【四】更新TabPy
您可以使用pip中的--upgrade選項來更新到較新版本。
pip install --upgrade tabpy-server
為了使其成功,如果您在Conda環境中安裝了TabPy,請確保它處於活動狀態。
【五】擴充套件環境
如果您的功能取決於未包含的Python軟體包,則需要將它們安裝到Python環境中,以使其可用於伺服器程式。
以下程式碼段假設您已經執行setup.sh或setup.bat,它建立了一個Conda環境,並在該環境中啟動了伺服器程式。
通過新增包名稱,它可用於在伺服器中執行的任何Python程式碼:
在Linux / MacOS上:
/Anaconda/bin/source activate Tableau-Python-Server
pip install _names_of_packages_here_
在Windows上:
/ Anaconda / Scripts / activate Tableau-Python-Server
pip install _names_of_packages_here_
如果您在預設的Python框架中安裝了沒有Anaconda的TabPy,那麼您可以通過以下方式實現:
pip install _names_of_packages_here_
您可以在伺服器程式執行時在單獨的終端中執行此操作 - 無需重新啟動。
【六】REST介面
伺服器程式暴露了幾個REST API以獲取狀態並執行Python程式碼並查詢已部署的方法。
1、http:get :: / info
獲取有關伺服器的靜態資訊。
☞示例請求:
GET /info HTTP/1.1
Host: localhost:9004
Accept: application/json
☞響應示例:
HTTP / 1.1 200 OK
Content-Type:application / json
{“description”:“”,
“creation_time”:“0”,
“state_path”:“/ Users / username / my-server-state-folder”,
“server_version”:“dev”,
“name”:“my-server-name”}
description是在state.ini檔案中硬編碼的字串,可以在那裡編輯。
creation_time是自1970-01-01以來的建立時間(以秒為單位),硬編碼在state.ini檔案中,可在其中進行編輯。
state_path是伺服器的狀態檔案路徑(伺服器啟動時環境變數TABPY_STATE_PATH的值)。
server_version是由伺服器提供的硬編碼字串(在server / common / config.py中定義)。客戶可以使用此資訊進行相容性檢查。
☞使用捲曲
curl -X GET http:// localhost:9004 / info
2、http:get :: / status
獲取部署端點的執行時狀態。如果在伺服器中未部署端點,則返回的資料是空的JSON物件。
☞示例請求:
GET /status HTTP/1.1
Host: localhost:9004
Accept: application/json
☞響應示例:
HTTP / 1.1 200 OK
Content-Type:application / json
{"clustering": {
"status": "LoadSuccessful",
"last_error": null,
"version": 1,
"type": "model"},
"add": {
"status": "LoadSuccessful",
"last_error": null,
"version": 1,
"type": "model"}
}
☞使用捲曲:
curl -X GET http:// localhost:9004 / status
3、http:get :: / endpoints
獲取部署的端點及其靜態資訊的列表。如果在伺服器中未部署端點,則返回的資料是空的JSON物件。
☞示例請求:
GET /endpoints HTTP/1.1
Host: localhost:9004
Accept: application/json
☞響應示例:
HTTP / 1.1 200 OK
Content-Type:application / json
{"clustering":
{"description": "",
"docstring": "-- no docstring found in query function --",
"creation_time": 1469511182,
"version": 1,
"dependencies": [],
"last_modified_time": 1469511182,
"type": "model",
"target": null},
"add": {
"description": "",
"docstring": "-- no docstring found in query function --",
"creation_time": 1469505967,
"version": 1,
"dependencies": [],
"last_modified_time": 1469505967,
"type": "model",
"target": null}
}
☞使用捲曲:
curl -X GET http:// localhost:9004 / endpoints
4、http:get :: / endpoints /:endpoint
獲取特定部署端點的描述。端點必須首先部署在伺服器中。
☞示例請求:
GET /endpoints/add HTTP/1.1
Host: localhost:9004
Accept: application/json
☞響應示例:
HTTP / 1.1 200 OK
Content-Type:application / json
{"description": "", "docstring": "-- no docstring found in query function --",
"creation_time": 1469505967, "version": 1, "dependencies": [],
"last_modified_time": 1469505967, "type": "model", "target": null}
☞使用捲曲:
curl -X GET http:// localhost:9004 / endpoints / add
6、http:post :: / evaluate
執行一個Python程式碼塊,用提供的值替換命名引數。
預期的POST主體是一個帶有兩個元素的JSON字典:
包含傳遞給程式碼的引數值的值的關鍵資料data。這些值是按鍵名稱(_arg1,_arg2等)的特定約定的鍵值對。
包含Python程式碼(一行或多行)的值的關鍵指令碼scritp。對引數名稱的任何引用將根據資料被其值替代。
☞示例請求:
POST /evaluate HTTP/1.1
Host: localhost:9004
Accept: application/json
{"data": {"_arg1": 1, "_arg2": 2}, "script": "return _arg1+_arg2"}
☞響應示例:
HTTP / 1.1 200 OK
Content-Type:application / json
3
☞使用捲曲:
curl -X POST http:// localhost:9004 / evaluate \
-d'{“data”:{“_arg1”:1,“_arg2”:2},“script”:“return _arg1 + _arg2”}'
可以通過預定義的函式tabpy.query從程式碼塊中呼叫已部署的函式。此函式的工作方式與客戶端庫的查詢方法類似,並返回相應的資料結構。該功能必須首先作為伺服器端點部署。
☞以下示例在部署deploy-function部分時呼叫端點叢集:
POST /evaluate HTTP/1.1
Host: http://example.com
Accept: application/json
{ "data":
{ "_arg1": [6.35, 6.40, 6.65, 8.60, 8.90, 9.00, 9.10],
"_arg2": [1.95, 1.95, 2.05, 3.05, 3.05, 3.10, 3.15]
},
"script": "return tabpy.query('clustering', x=_arg1, y=_arg2)"}
☞下一個示例顯示如何使用curl從終端呼叫評估;此程式碼查詢部署在deploy-function中的方法add:
curl -X POST http:// localhost:9004 / evaluate \
-d'{“data”:{“_arg1”:1,“_arg2”:2},
“script”:“return tabpy.query(\”add \“,x = _arg1,y = _arg2)[\”response \“]”}'
7、http:post :: / query /:endpoint
在指定的端點執行一個函式。該功能必須首先部署。
該介面希望具有資料鍵的JSON體,根據其原始定義指定函式的值。在下面的例子中,函式聚類被定義為兩個引數x和y的簽名,期望數字陣列。
☞示例請求:
POST / query / clustering HTTP / 1.1
Host:localhost:9004
Accetp:application / json
{“data”:{
“x”:[6.35,6.40,6.65,8.60,8.90,9.00,9.10],
“y”:[1.95,1.95,2.05,3.05,3.05,3.10,3.15]}}
☞響應示例:
HTTP / 1.1 200 OK
Content-Type:application / json
{“model”:“clustering”,“version”:1,“response”:[0,0,0,1,1,1,1]
“uuid”:“46d3df0e-acca-4560-88f1-67c5aedeb1c4”}
☞使用捲曲:
curl -X GET http:// localhost:9004 / query / clustering -d \
'{“data”:{“x”:[6.35,6.40,6.65,8.60,8.90,9.00,9.10],
“y”:[1.95,1.95,2.05,3.05,3.05,3.10,3.15]}}'
今天的Tableau技巧你Get到了嗎?趕快開啟你的Tableau試試看吧!
文章部分資訊來源於網路,如有侵權請告知
相關文章
- 舉個例子!Tableau技巧(37):如何在工具提示裡顯示條形圖
- 舉個栗子!Tableau技巧(36):快速製作巢狀條形圖巢狀
- Tableau實戰 貨架圖分析(四)
- Tableau入門
- 學習Tableau
- 分享幾個Java面試小技巧,建議收藏!Java面試
- 最棒 Spring Boot 乾貨總結(超詳細,建議收藏)Spring Boot
- 軟體測試技術乾貨丨舉個例子告訴你,未開發完成的介面該如何測試
- javascript 設計模式(修言小冊乾貨,長文建議收藏)JavaScript設計模式
- 資料分析之tableau
- Tableau學習記錄
- Python魔法:20個讓你程式設計事半功倍的奇淫技巧(建議收藏)Python程式設計
- Tableau視覺化結果的優化小技巧(二)視覺化優化
- tableau必知必會之VMware 搭建 Tableau Server for Linux 單機環境ServerLinux
- 技術乾貨| 如何在MongoDB中輕鬆使用GridFS?MongoDB
- 純乾貨!2023年最全外貿獲客方式彙總!建議收藏
- 一文打盡知識圖譜(超級乾貨,建議收藏!)
- 推薦系統演算法合集,滿滿都是乾貨(建議收藏)演算法
- tableau自定義地理編碼
- tableau視訊筆記(一)筆記
- 舉個栗子!Tableau 技巧(75):使用計算實現在同一檢視切換相同分析維度的圖表...
- tableau實戰系列(十七)-如何將 tableau的Server License遷移到新環境中去Server
- 用500行純前端程式碼在瀏覽器中構建一個Tableau前端瀏覽器
- 10個常用的Python影像處理工具,建議收藏!Python
- 乾貨!這可能是最全的IntelliJ IDEA For Mac快捷鍵說明,建議收藏!IntelliJIdeaMac
- 挑戰月薪30K | 前端效能優化的12 條建議(乾貨收藏)前端優化
- tableau 對比銷售額分析
- Python中如何取餘數?建議收藏!Python
- 用Tableau製作官網流量週報
- tableau 總額百分比
- 史上最強Tableau Server 安裝教程Server
- CSDN社群乾貨技術分享:探尋技術進階之道(Python和AI)PythonAI
- 乾貨技巧|關於Redis的16個使用技巧Redis
- 技術乾貨 | WebRTC 技術解析之 Android VDMWebAndroid
- 乾貨快收藏!遊戲策劃必看的FPS主要技巧拆解遊戲
- 乾貨學起來!分享4個簡單實用的Word技巧,請低調收藏!
- [乾貨分享]1000篇乾貨好文!量子技術——進階篇
- [乾貨分享]1000篇乾貨好文!量子技術——資訊篇