Lewati ke konten utama

Cara Menjalankan Python di Tableau dengan TabPy: Panduan Lengkap

Ikuti langkah-langkah ini untuk mulai menjalankan skrip Python di Tableau menggunakan TabPy. Ini akan memungkinkan Anda membuat pipeline pemodelan dan analitik untuk visualisasi Tableau Anda.
· 9 mnt Baca

Jelajahi bersama AI

Tableau adalah alat visualisasi data yang sangat populer di kalangan profesional data dan sering menjadi keterampilan yang dicari saat perekrutan. Python adalah bahasa pemrograman serbaguna yang banyak digunakan dalam data science. Integrasi Python di Tableau memungkinkan pengguna membangun model canggih, menjalankan perhitungan kompleks, dan memperluas kapabilitas bawaan Tableau. 

Ini sangat berguna bagi analis data, data scientist, dan profesional business intelligence yang ingin memanfaatkan pemodelan statistik, machine learning, dan teknik pemrosesan data langsung di dalam dashboard mereka.

Artikel ini berfungsi sebagai tutorial praktis untuk mengintegrasikan Python ke dalam Tableau. Anda akan mempelajari cara menyiapkan lingkungan, menjalankan skrip Python, mengeksplorasi kasus penggunaan analitik lanjutan, dan menangani masalah umum. Jika Anda ingin mendapatkan pengantar Tableau, ikuti kursus pengantar Tableau ini.

Memahami Integrasi

Integrasi Python dengan Tableau dimungkinkan melalui layanan eksternal, yaitu ekstensi analitik bernama TabPy (Tableau Python Server). Ekstensi ini memungkinkan pengguna Tableau menjalankan skrip Python di dalam lingkungan Tableau mereka. 

Meskipun Anda mungkin sudah pernah menggunakan Python untuk membuat file lalu memvisualisasikannya di Tableau seperti pada tutorial memvisualisasikan data dengan Python dan Tableau ini, koneksi dengan TabPy memungkinkan integrasi yang lebih mulus antara data di Tableau dan skrip Python Anda.

Peran TabPy

TabPy bertindak sebagai jembatan antara Tableau dan Python. TabPy beroperasi dengan model klien-server, di mana Tableau (klien) mengirim skrip ke TabPy (server), yang mengeksekusinya di lingkungan Python dan mengembalikan hasilnya.

Cara kerjanya

  1. Tableau Desktop atau Server mengirim skrip menggunakan calculated fields.
  2. TabPy mengeksekusi kode Python.
  3. Hasil dikirim kembali ke Tableau untuk dirender dalam visualisasi.

Diagram showing connection between Tableau, TabPy, and Python

Diagram yang menunjukkan koneksi antara Tableau, TabPy, dan lingkungan Python yang dibuat menggunakan eraser.io

Manfaat menggunakan Python dengan Tableau

Walau Tableau sangat kuat, terkadang calculated fields terasa kaku atau kurang efisien untuk tugas analitik yang kompleks. Integrasi Python menawarkan sejumlah keunggulan dibanding kapabilitas bawaan Tableau dan memberi pengguna lebih banyak keleluasaan memproses data.

Misalnya, Anda dapat menyertakan kasus penggunaan berikut dengan Python:

  • Pemodelan lanjutan: Gunakan pustaka seperti scikit-learn, statsmodels, dan xgboost untuk regresi, klastering, dan klasifikasi.
  • Integrasi API: Ambil data real-time menggunakan API seperti Twitter, Reddit, atau layanan enterprise kustom.
  • Pemrosesan dinamis: Jalankan perhitungan yang beradaptasi berdasarkan masukan pengguna atau perubahan data. Anda dapat menggunakan paket seperti pandas atau numpy untuk benar-benar meningkatkan kekuatan analitik dashboard Tableau Anda.

Menyiapkan TabPy

Untuk mulai menggunakan Python di Tableau, Anda perlu memasang dan mengonfigurasi TabPy. Langkah ini cukup mudah! Proses utamanya adalah memastikan Anda sudah memasang Python dan Tableau di komputer Anda.

Persyaratan sistem dan instalasi

Prasyarat:

  • Python 3.7+ (pastikan Anda memiliki pip)
  • Tableau Desktop atau Tableau Server (disarankan 2020.1 atau yang lebih baru)

Instalasi langkah demi langkah:

1. Pasang Python. Ikuti petunjuk untuk sistem operasi Anda untuk memasang Python.

2. Buat Virtual Environment:

python3 -m venv tableau-env

3. Pasang TabPy (pastikan environment Anda diaktifkan). Anda juga dapat memasang paket lain seperti pandas, numpy, sklearn, dan lainnya pada tahap ini.

pip install tabpy

4. Mulai TabPy:

tabpy

Konfigurasi TabPy

Untuk menyesuaikan TabPy, sunting file konfigurasinya. Penyesuaian ini memungkinkan Anda mengubah hal-hal seperti port yang dipantau TabPy untuk informasi dan protokol transfer yang digunakan. Untuk informasi lebih lanjut tentang pengaturan konfigurasi, ikuti panduan konfigurasi TabPy.

Contoh file konfigurasi (tabpy.conf)

Berikut contoh tampilan file konfigurasi untuk tabpy.

[TABPY]
TABPY_PORT = 9004
TABPY_TRANSFER_PROTOCOL = http

Tips jaringan dan keamanan

Karena TabPy bergantung pada penggunaan koneksi server mirip internet ke sumber daya lokal Anda, sebaiknya ikuti beberapa tips jaringan dan keamanan berikut: 

  • Pastikan Anda memilih port yang terbuka di firewall, tetapi tidak menerima koneksi eksternal. 
  • Siapkan reverse proxy seperti NGINX dengan SSL untuk komunikasi yang aman. 
  • Jika berjalan di Tableau Server, pastikan TabPy dapat diakses dari jaringan yang sama

Untuk detail lebih lanjut memulai TabPy, ikuti tutorial memulai TabPy ini.

Menjalankan Python di Tableau

Setelah menyiapkan TabPy, Anda dapat mengintegrasikan Python langsung ke dashboard Tableau. Anda harus terlebih dahulu mengaktifkan koneksi ekstensi di Tableau. Buka Tableau Desktop Anda, masuk ke Settings and Performance, Manage analytics Extension Connection, dan pilih TabPy. Lalu, konfigurasikan berdasarkan pengaturan di file konfigurasi TabPy Anda.

Manage Analytics Extensions Connection screen in Tableau

Layar Manage Analytics Extensions Connection di Tableau (help.tableau.com)

Metode integrasi skrip

Ada tiga cara utama untuk menjalankan skrip Python di Tableau: perhitungan skrip inline di dalam calculated field, prapemrosesan dengan ekstensi Tableau, dan endpoint model yang dideploy.

1. Perhitungan skrip inline

Gunakan fungsi SCRIPT_REAL, SCRIPT_INT, SCRIPT_STR, atau SCRIPT_BOOL di Tableau. Fungsi-fungsi ini masing-masing mengirim data ke server TabPy secara langsung tanpa menjalankan skrip eksternal. Anda dapat menulis Python langsung di dalam fungsi ini.

Contoh: Normalisasi Z-score

SCRIPT_REAL(
  "import scipy.stats as stats
   return stats.zscore(_arg1)",
  SUM([Sales])
)

Contoh di atas memungkinkan Anda mengimpor paket stats dari scipy dan mengembalikan Z-score dari kolom SUM([Sales]) di Tableau Anda.

2. Prapemrosesan dengan table extensions

Gunakan ekstensi Tableau untuk melakukan prapemrosesan dengan Python di luar Tableau, lalu impor hasilnya.

  • Praproses data dengan Pandas/Numpy.
  • Simpan hasil sebagai CSV atau endpoint API.
  • Muat data yang sudah diproses ke Tableau.

Ekstensi ini diaktifkan dari halaman Sheets di workbook Tableau Anda. Dengan ekstensi ini, Anda memasukkan seluruh skrip menggunakan TabPy Extension. Ini kemudian menjalankan skrip pada seluruh dataset Anda sehingga memungkinkan prapemrosesan data secara menyeluruh sekaligus, bukan per baris. Ini sering kali menghasilkan tabel terpisah sebagai output.

Table Extension feature available at the bottom of Sheets page 

Fitur Table Extension tersedia di bagian bawah halaman Sheets. (Dari dokumentasi Tableau)

3. Endpoint model yang dideploy

Metode terakhir adalah salah satu yang paling kuat. Kita meng-host model menggunakan server TabPy untuk menjalankan skrip. Kemudian kita memanggil skrip ini di Tableau saat kita ingin menjalankan model tersebut pada serangkaian data tertentu.

Contoh: Deploy model ke TabPy

Langkah pertama adalah membuat file yang akan dideploy oleh TabPy. Setelah Anda menjalankan server TabPy (mengikuti langkah-langkah di atas), Anda dapat menggunakannya untuk menjalankan skrip Python Anda. Setelah skrip Python tersebut dideploy, kita akan memanggilnya di Tableau menggunakan SCRIPT_REAL.

from tabpy.tabpy_tools.client import Client
import pickle

def predict_sales(input_features):
    model = pickle.load(open(model.pkl, ‘rb’)) # This assumes you have a saved model
    return model.predict(input_features)

client = Client(‘http://localhost:9004’)

client.deploy('predict_sales', predict_sales, 'Predict sales using linear model', override=True)

Pemanggilan Skrip Tableau:

SCRIPT_REAL("return tabpy.query(‘predict_sales’, _arg1)[‘response’]", SUM[Feature1])

Teknik optimisasi kinerja

Sama seperti menjalankan skrip Python di luar Tableau, kita harus memperhatikan kinerja. Ada beberapa hal khusus yang perlu dipertimbangkan saat menjalankan data di Tableau.

  1. Pemrosesan batch: Minimalkan jumlah pemanggilan dengan memproses data dalam potongan. Sering kali lebih membantu memproses seluruh dataset sekaligus, alih-alih saat dipanggil oleh Tableau.
  2. Caching hasil: Cache hasil statis menggunakan pengaturan caching Tableau.
  3. Penvektoran: Gunakan operasi NumPy/Pandas alih-alih loop untuk eksekusi yang lebih cepat. Ini sering memvektorisasi perhitungan matematika sehingga jauh lebih efisien.

Jika menggunakan Tableau Server, Anda dapat mengoptimalkan lebih lanjut menggunakan connection pooling. Secara umum, connection pooling adalah gagasan mempertahankan koneksi persisten dengan sumber data untuk meminimalkan overhead. 

Anda dapat melakukan hal yang sama untuk sumber data dan TabPy agar mencegah Tableau “membuka kembali” koneksi ke TabPy setiap kali Anda menjalankan skrip atau perhitungan baru.

Kasus Penggunaan Analitik Lanjutan

Setelah memahami dasar-dasarnya, Anda dapat menerapkan analitik yang sangat disesuaikan. Metode ini melibatkan pembuatan skrip yang lebih lanjut yang berinteraksi dengan dashboard Anda dengan cara yang menarik.

Analitik prediktif real-time

Salah satu model yang bagus adalah menerapkan model deret waktu (misalnya, ARIMA, Prophet) yang diperbarui dengan masukan pengguna, seperti pada panduan mendeploy fungsi dan Prophet dengan TabPy ini. 

Setelah Anda membangun model, Anda dapat membungkusnya ke dalam skrip yang dapat dideploy oleh TabPy. Lalu kita hubungkan model ini ke Tableau menggunakan fungsi SCRIPT_REAL yang sama untuk memanggil model yang sudah dideploy.

Use Case: Peramalan penjualan

  • Bangun dan latih model Prophet di Python.
  • Deploy model di TabPy menggunakan riwayat penjualan sebagai fitur
  • Perbarui prediksi angka penjualan saat filter dashboard berubah.

Kini, jika seseorang mengubah filter seperti lokasi, waktu, atau produk, Tableau akan menghasilkan ramalan baru secara real-time dengan filter baru tersebut.

Keamanan dan Tata Kelola

Karena kita membuka koneksi ke TabPy, sangat penting untuk mengikuti protokol keamanan dan tata kelola yang tepat. 

Protokol autentikasi

TabPy menawarkan beragam protokol autentikasi untuk membantu pengguna tetap aman. Berikut yang didukung dan dapat dikonfigurasi:

  • Autentikasi dasar (nama pengguna/kata sandi)
  • Autentikasi berbasis sertifikat
  • OAuth2 dengan penanganan token aman (untuk kebutuhan enterprise lanjutan)

Praktik terbaiknya adalah selalu menggunakan HTTPS dan token yang aman untuk deployment produksi.

Langkah perlindungan data

Saat menghubungkan Tableau dan TabPy, kita harus memastikan mengikuti tata kelola perlindungan data yang sesuai. Ini mencakup memastikan data mengalir melalui jalur koneksi yang benar dan tidak menggunakan port lain, serta data dienkripsi setiap saat saat berpindah. Berikut beberapa praktik terbaik yang perlu diikuti:

  • Enkripsi komunikasi antara Tableau dan TabPy.
  • Gunakan aturan firewall dan kontrol akses.
  • Aktifkan audit logging di TabPy untuk kepatuhan. Secara berkala perbarui paket Python untuk menambal kerentanan.

Pada akhirnya, jika organisasi Anda harus mengikuti kepatuhan regulasi tertentu, pastikan Anda terus mengikuti praktik terbaik mereka. Pastikan GDPR dan CCPR diikuti dengan menganonimkan dan melakukan tokenisasi PII sebelum dikirim ke TabPy. Selain itu, gunakan penyimpanan yang aman untuk hasil antara Python guna meminimalkan kebocoran.

Pemecahan Masalah dan Debugging

Masalah tidak terhindarkan, tetapi sebagian besar dapat segera diselesaikan.

Masalah Umum dan Solusinya

Masalah

Solusi

Tableau tidak bisa terhubung ke TabPy

Periksa firewall, konfirmasi port (9004), dan pastikan TabPy berjalan

Skrip mengembalikan nilai NULL

Validasi tipe masukan dan periksa log error Python

Kinerja lambat

Optimalkan data yang dikirim ke Python, kurangi frekuensi pemanggilan, gunakan caching

Jika Anda mengalami masalah pada kode, ikuti beberapa langkah debugging ini (yang akan berguna untuk skrip apa pun):

  • Gunakan print() atau logging di dalam skrip (log TabPy menampilkan ini).
  • Uji skrip Python di luar Tableau menggunakan Jupyter.
  • Periksa log Tableau di My Tableau Repository/Logs.

Kesimpulan

Mengintegrasikan Python dengan Tableau membuka kekuatan analitik lanjutan langsung di dalam dashboard visual Anda. Dengan TabPy, Anda dapat:

  • Menjalankan perhitungan kompleks
  • Mendeploy dan berinteraksi dengan model ML
  • Memperluas kapabilitas bawaan Tableau secara signifikan

Baik Anda menjalankan model statistik, memproses data teks, maupun memvisualisasikan prediksi, Python membawa dimensi kecerdasan baru ke dashboard Tableau.

Dengan mengikuti langkah-langkah dalam panduan ini, Anda akan dapat memanfaatkan Python untuk analitik yang lebih tajam, fleksibel, dan interaktif. Untuk informasi lebih lanjut tentang Tableau dan kapabilitasnya, lihat panduan berikut:

Jalankan Python di Tableau - FAQ

Bisakah saya menggunakan Python dengan Tableau Public?

Tidak. Tableau Public tidak mendukung layanan eksternal seperti TabPy. Integrasi Python tersedia di Tableau Desktop (Professional Edition) dan Tableau Server.

Apakah TabPy aman untuk lingkungan produksi?

TabPy dapat diamankan untuk produksi menggunakan HTTPS, pembatasan firewall, protokol autentikasi (dasar, berbasis sertifikat, OAuth2), dan reverse proxy seperti NGINX. Namun, konfigurasi tambahan diperlukan di luar pengaturan default.

Bagaimana Tableau menangani kinerja skrip Python di dashboard?

Tableau mengirim data ke TabPy dan menunggu respons, yang dapat menyebabkan jeda jika skrip tidak dioptimalkan. Untuk meningkatkan kinerja, gunakan teknik seperti penvektoran, caching, pemrosesan batch, dan meminimalkan data yang dikirim.

Bisakah saya menggunakan virtual environment dengan TabPy?

Ya. Anda dapat menjalankan TabPy di dalam virtual environment Python, yang membantu mengisolasi dependensi dan menghindari konflik. Aktifkan environment sebelum meluncurkan TabPy.

Bisakah TabPy mengembalikan struktur data kompleks seperti JSON atau dictionary?

Tidak. TabPy harus mengembalikan daftar flat atau array NumPy yang dapat diinterpretasikan Tableau. Struktur data kompleks seperti dictionary atau JSON harus dipraproses menjadi daftar sebelum dikembalikan.

Tim Lu

Penulis

Tim Lu

Saya seorang data scientist dengan pengalaman dalam analisis spasial, machine learning, dan pipeline data. Saya pernah bekerja dengan GCP, Hadoop, Hive, Snowflake, Airflow, dan proses data science/engineering lainnya.

Topik

Terkait

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026