Snowflake dan Streamlit: Panduan Lengkap Membangun Aplikasi Data
Panduan komprehensif untuk membangun, men-deploy, dan mengoptimalkan aplikasi Streamlit langsung di dalam Snowflake. Manfaatkan framework Python open-source populer melalui integrasinya dengan platform cloud yang andal.
Snowflake adalah platform data berbasis cloud yang populer dan andal, sementara Streamlit adalah framework Python open-source yang dirancang untuk membangun aplikasi web data. Streamlit in Snowflake (SiS) adalah solusi terintegrasi yang memungkinkan Anda membangun dan men-deploy aplikasi data langsung di dalam ekosistem Snowflake. Alih-alih harus menangani berbagai alat terpisah, Anda dapat menggunakan Python dan infrastruktur Snowflake untuk membuat aplikasi interaktif dengan cepat.
Tutorial ini akan membahas apa itu Streamlit in Snowflake, fitur utamanya, langkah penyiapan, strategi deployment, keamanan, kiat performa, dan kasus penggunaan nyata. Pada akhirnya, Anda akan memiliki panduan jelas untuk membangun dan meluncurkan aplikasi data pertama Anda. Pastikan untuk meninjau dasar-dasar Snowflake dan antarmukanya. Saya juga menyarankan untuk mencoba Streamlit di Python di luar Snowflake agar lebih memahami fungsinya melalui tutorial Streamlit ini.
Apa Itu Streamlit in Snowflake?
Streamlit in Snowflake memungkinkan pembuatan aplikasi interaktif yang terhubung langsung ke data Snowflake Anda tanpa meninggalkan platform.
Gambaran umum Streamlit in Snowflake
Streamlit in Snowflake menggabungkan kesederhanaan Streamlit dengan skalabilitas Snowflake. Secara tradisional, membangun aplikasi memerlukan server eksternal, API, dan integrasi yang rumit. Streamlit merangkum fungsionalitas inti menjadi beberapa API berorientasi objek dan integrasi Python. Proses deployment kemudian dialihkan ke Snowflake menggunakan Snowsight.
Ini menghilangkan kebutuhan akan infrastruktur tambahan dan menyediakan lingkungan terpadu yang terintegrasi mulus dengan Snowpark, Cortex AI, serta data Snowflake Anda. Artinya, pengembang Python dan tim data bekerja dari sumber yang sama tanpa beban tambahan untuk memindahkan data atau kode.
Konteks historis
Pada 2022, Snowflake mengakuisisi Streamlit untuk mendekatkan pengembangan aplikasi interaktif ke data perusahaan. Akuisisi ini mempertahankan visi open source Streamlit untuk memberi pengembang kemampuan menggunakan Python guna membuat aplikasi web yang menarik sekaligus terintegrasi dengan salah satu platform data terkuat yang tersedia saat ini. Hal ini memungkinkan perusahaan memanfaatkan Streamlit secara fleksibel dengan kekhawatiran keamanan yang lebih kecil dan menyatukan proses pengembangan aplikasi.
Filosofi inti
Filosofi SiS berfokus pada pemeliharaan tingkat keamanan dan tata kelola yang sama seperti yang Anda harapkan dari Snowflake sambil memberikan kemudahan menggunakan Streamlit untuk membangun aplikasi web data. Karena seluruh data tetap berada di dalam Snowflake, Anda mendapatkan jaminan keamanan dan keselamatan yang sama seperti yang diharapkan.
Keunggulan utamanya adalah memastikan framework Python tetap sama dan memberikan pengalaman serupa di Snowflake seperti saat digunakan di luar Snowflake. Ini membuat SiS mudah didekati oleh pengembang yang pernah bekerja dengan Streamlit sebelumnya atau yang memiliki pengalaman Python dan ingin memanfaatkan keterampilan yang ada untuk membangun aplikasi web bagi data Snowflake.
Fitur dan Kapabilitas Utama Streamlit in Snowflake
Streamlit in Snowflake mempertahankan fitur cloud utama Snowflake, seperti layanan terkelola sepenuhnya dan kolaborasi yang mudah. Ia juga memiliki fungsionalitas Streamlit untuk visualisasi dan iterasi cepat sambil terintegrasi dengan infrastruktur.
Layanan terkelola sepenuhnya
Snowflake mengelola seluruh infrastruktur di balik layar, sehingga Anda tidak perlu khawatir tentang server, penskalaan, atau stabilitas. Aplikasi berjalan dengan interaktivitas real-time, melakukan penskalaan otomatis berdasarkan penggunaan, dan mendapatkan manfaat dari keandalan bawaan Snowflake.
Integrasi dengan infrastruktur Snowflake
Aplikasi Streamlit di dalam Snowflake terhubung secara native dengan Snowpark, Cortex AI, dan database. Misalnya, Anda dapat mengintegrasikan Cortex AI Analyst ke dalam aplikasi Streamlit Anda, memungkinkan pengguna mengajukan pertanyaan dalam bahasa alami tentang data dan mendapatkan jawaban secara native di dashboard.
Fitur Snowflake lainnya, seperti caching bawaan, meminimalkan kueri berulang, sementara peningkatan UI seperti mode gelap dan komponen kustom meningkatkan pengalaman pengguna. Otentikasi dan koneksi aman ditangani secara otomatis melalui protokol otentikasi Snowflake. Sensitivitas data dapat dikelola menggunakan kontrol berbasis peran Snowflake.
Hal ini menyederhanakan tugas pengelolaan data dan memungkinkan pengembang fokus membangun alat.
Visualisasi interaktif dan iterasi cepat
Salah satu kekuatan terbesar Streamlit adalah kemampuannya mengubah skrip Python sederhana menjadi aplikasi interaktif dalam hitungan menit. Di Snowflake, Anda dapat melakukan pratinjau dan iterasi aplikasi secara langsung, memperbarui kode dan melihat hasil live tanpa menunggu deployment yang lama.
Berbagi dan kolaborasi
Aplikasi Streamlit dapat dibagikan langsung dengan pengguna di dalam Snowflake. Ini memudahkan berbagi aplikasi ke berbagai tim menggunakan peran atau anggota individu. Kolaborasi terbangun dalam alur kerja, memungkinkan beberapa anggota tim bekerja, menguji, dan men-deploy aplikasi bersama.
Memulai dengan Streamlit in Snowflake
Memulai dengan SiS itu mudah, dan Anda dapat membuat aplikasi pertama dalam hitungan menit. Kita hanya perlu memastikan Anda memiliki izin dan pengetahuan yang tepat.
Prasyarat
Untuk membangun aplikasi Streamlit di Snowflake, Anda memerlukan akun Snowflake aktif dengan akses ke Snowsight, antarmuka web. pengantar Snowflake ini dapat menunjukkan cara menavigasi Snowsight. Anda sebaiknya memiliki pengetahuan dasar Python. Bahkan ada baiknya meninjau kursus pengantar Python ini untuk menyegarkan pengetahuan Anda.
Setelah Anda memiliki akses ke Snowflake, pastikan Anda memiliki izin berikut:
Izin database: USAGE
Izin skema: USAGE, CREATE STREAMLIT, CREATE STAGE
Penyiapan akun dan konfigurasi lingkungan
Mulailah dengan masuk ke Snowsight dan memilih atau membuat database dan skema tempat aplikasi Anda akan berada. Mulai dengan membuka My Workspace dan membuka file SQL baru. Mari buat peran bernama streamlit_creator yang akan memiliki akses ke streamlit_schema pada streamlit_database. Selain itu, kita akan membuat warehouse bernama streamlit_wh yang akan menjadi sumber komputasi utama untuk aplikasi Streamlit kita.
CREATE ROLE streamlit_creator;CREATEDATABASE streamlit_db;USEDATABASE streamlit_db;CREATESCHEMA streamlit_schema;CREATE WAREHOUSE streamlit_wh WITH WAREHOUSE_SIZE = ‘XSMALL’;GRANTUSAGEONSCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;GRANTUSAGEONDATABASE streamlit_db TO ROLE streamlit_creator;GRANTUSAGEON WAREHOUSE streamlit_wh TO ROLE streamlit_creator;GRANTCREATE STREAMLIT ONSCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;GRANTCREATE STAGE ONSCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;Didukung oleh
Membangun Aplikasi Streamlit Pertama Anda
Agar lebih konkret, mari kita bahas aplikasi sederhana. Setelah akun Snowflake dan izin Anda siap, di Snowsight arahkan ke PROJECTS >> Streamlit. Di jendela ini klik + Streamlit App di kanan atas.
Isi nama Aplikasi dengan nama apa pun yang Anda inginkan. Perbarui lokasi aplikasi agar menggunakan STREAMLIT_DB dan STREAMLIT_SCHEMA. Lalu pilih “Run on warehouse” kemudian pilih “STREAMLIT_WH” sebagai App Warehouse.
Ini akan membuka editor yang menyertakan skrip kecil secara default. Aplikasi juga akan dijalankan otomatis dan menampilkan pratinjau.
Mari coba menambahkan sedikit data yang menarik bagi kita ke aplikasi. Letakkan potongan kode kecil ini di bagian bawah kode yang sudah ada:
from snowflake.snowpark.functions importsumas sf_sum
st.title("Simple Sales Dashboard")
st.write("This app displays sales by part using Snowflake data.")# Query sample dataset
df =(
session.table("SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM").group_by("L_PARTKEY").agg(sf_sum("L_QUANTITY").alias("TOTAL_SALES")).limit(10).order_by("TOTAL_SALES", ascending=False).to_pandas())# Plot chart
st.bar_chart(data=df, x="L_PARTKEY", y="TOTAL_SALES")# Show table
st.dataframe(df)Didukung oleh
Lalu klik tombol “Run” di kanan atas. Pratinjau dalam aplikasi ini akan diperbarui dan memproses data yang disediakan oleh tabel contoh. Seharusnya menampilkan tabel data dan grafik batang. Dari sini, Anda dapat menyesuaikan kueri, menambahkan filter, atau menyempurnakan UI dengan widget Streamlit.
Yang akan Anda perhatikan di sini adalah penggunaan Snowpark. Jika Anda belum pernah menggunakannya, Snowpark adalah pustaka Snowflake yang memungkinkan Anda memproses data Snowflake menggunakan bahasa pemrograman seperti Python. Saya sangat merekomendasikan pengantar Snowpark ini karena pengambilan data ke Streamlit sering kali memerlukan penggunaan Snowpark untuk berinteraksi dengan database Snowflake Anda.
Strategi dan Metode Deployment
Ada beberapa cara untuk men-deploy Streamlit in Snowflake. Yang termudah adalah menggunakan Snowsight, antarmuka web, tetapi Anda juga dapat menggunakan alat command-line interface (CLI). Selain itu, Anda dapat menambahkan alat alur kerja untuk membantu pengorganisasian proyek dan penskalaan deployment.
Deployment melalui Snowsight
Seperti ditunjukkan pada bagian sebelumnya, metode paling sederhana adalah melalui Snowsight, antarmuka web Snowflake. Nilai tambahnya adalah tampilan layar terbagi untuk mengedit dan mempratinjau aplikasi Anda secara real-time. Pengaturan ini ideal bagi pengembang yang menginginkan umpan balik langsung saat mengembangkan.
Deployment melalui CLI
Untuk skenario yang lebih lanjut, alat CLI memungkinkan Anda men-deploy aplikasi secara terprogram. Ini sangat berguna saat mengintegrasikan deployment aplikasi ke dalam pipeline continuous integration dan continuous delivery (CI/CD). Dengan mengikuti pendekatan pengembang yang lebih terstruktur, aplikasi dapat disimpan dalam folder proyek sebagai file .py seperti aplikasi Streamlit biasa bersama file .yml yang mengendalikan lingkungan dan perintah Snowflake. Artinya, kita dapat menggunakan GitHub untuk melacak perubahan, menjalankan pengecekan otomatis, dan melakukan deployment tanpa hambatan.
Integrasi dengan dbt dan alat alur kerja
Opsi lain adalah menggabungkan aplikasi Streamlit dengan alat alur kerja seperti dbt (data build tool), yang didukung secara native oleh Snowflake. Misalnya, dbt dapat mengelola alur kerja ETL inti Anda yang mengalir ke aplikasi Streamlit. Dalam proyek dbt yang sama, Anda dapat melakukan redeploy Streamlit secara otomatis sesuai kebutuhan agar selaras dengan alur kerja dbt Anda. Ini memungkinkan Anda menata alur kerja data yang kompleks dengan rapi ke dalam proyek dan menskalakan deployment seiring alur kerja Anda.
Arsitektur dan Implementasi Teknis
Mari bahas bagaimana Streamlit in Snowflake sebenarnya berfungsi.
Arsitektur teknis
Aplikasi Streamlit in Snowflake berjalan dalam lingkungan berbasis kontainer yang aman dan sepenuhnya dikelola oleh Snowflake. Desain ini memastikan aplikasi tetap terisolasi sambil mempertahankan koneksi aman ke sumber dan layanan data Snowflake. Seiring meningkatnya kompleksitas aplikasi atau bertambahnya ukuran database, Snowflake mengelola penskalaan di backend.
Manajemen warehouse
Saat Anda meluncurkan aplikasi, aplikasi akan menggunakan sumber daya komputasi dari warehouse yang Anda konfigurasikan. Sama seperti kueri SQL Anda, ukuran warehouse memengaruhi performa dan biaya, sehingga perencanaan sumber daya menjadi penting. Pengembang sering kali merasa berguna memiliki warehouse yang terikat ke aplikasi Streamlit mereka untuk penyusunan jejak yang lebih sederhana. Selain itu, Snowflake menggunakan internal stage untuk penyimpanan file yang aman, yang mencegah data bocor ke luar platform. Ini menyederhanakan pemasokan data ke aplikasi Anda sambil mempertahankan keamanan data.
Paket Python dan lingkungan
Lingkungan Python di SiS dikelola dan dikurasi demi keamanan. Hanya paket yang disetujui yang tersedia, dan pemasangan paket eksternal dibatasi. Selain itu, beberapa hal seperti skrip, gaya, font, dan penyematan iframe dibatasi demi alasan keamanan. Jika Anda memerlukan fungsionalitas di luar yang disediakan, Anda mungkin perlu mengimplementasikannya melalui Snowpark UDF atau mengandalkan pustaka Python yang sudah didukung oleh Snowflake.
Model Keamanan dan Izin
Syukurlah, SiS menggunakan banyak infrastruktur keamanan Snowflake yang sudah ada, seperti kontrol akses berbasis peran, berbagi, dan keamanan jaringan.
Kontrol akses berbasis peran (RBAC)
Snowflake memanfaatkan sistem kontrol akses berbasis peran (RBAC) untuk aplikasi Streamlit dan datanya. Mengakses data memerlukan hak USAGE untuk aplikasi Streamlit mana pun dan data dasarnya. Hanya peran dengan hak CREATE STREAMLIT yang dapat membangun aplikasi, dan kepemilikan aplikasi terkait dengan izin tingkat skema. Ini memastikan kontrol yang jelas atas siapa yang dapat mengembangkan dan mengelola aplikasi.
Berbagi dan kontrol akses
Berbagi aplikasi juga dikendalikan dengan ketat. Anda dapat memberikan atau membatasi akses ke aplikasi berdasarkan peran pengguna. Untuk eksekusi SQL, mekanismenya mengikuti izin berbasis peran yang sama. SQL dijalankan melalui aplikasi Streamlit dan tidak memungkinkan pengembang menjalankan kueri SQL pada database tanpa izin yang semestinya.
Keamanan jaringan dan konten
Di sisi jaringan, Snowflake menerapkan content security policies (CSP) yang ketat. Kebijakan ini mencegah aplikasi memuat skrip, gaya, atau sumber daya eksternal yang tidak sah, sehingga mengurangi risiko eksfiltrasi data atau integrasi yang tidak aman. Dengan meminimalkan pustaka eksternal yang diimpor ke lingkungan, risiko celah keamanan berkurang dan privasi data serta pengguna terlindungi.
Optimasi Performa Snowflake Streamlit
Seiring aplikasi Anda menjadi lebih kompleks, optimasi yang tepat penting untuk menjaga fungsionalitas yang baik.
Optimasi kueri dan caching
Membangun aplikasi yang efisien memerlukan perhatian pada kueri dan sumber daya komputasi. Ada baiknya menguji kueri Anda di luar aplikasi Streamlit (pada warehouse serupa) untuk memahami upaya komputasi yang dibutuhkan kueri Anda. Menulis kueri SQL yang teroptimasi penting untuk mencegah bottleneck.
Fungsi caching bawaan Streamlit st.cache_data dan st.cache_resource membantu mengurangi komputasi berulang dan pemuatan ulang data. Namun, ada catatan bahwa st.cache_data dan st.cache_resource belum sepenuhnya didukung. Keduanya hanya memungkinkan caching berbasis sesi, yang berarti setiap kali pengguna membuka sesi baru, kueri dan data harus dimuat ulang. Perlu diingat hal ini dan pastikan untuk mengoptimalkan kueri Anda semaksimal mungkin.
Pemilihan dan konfigurasi warehouse
Pemilihan warehouse berperan besar dalam responsivitas aplikasi. Warehouse yang lebih besar meningkatkan kecepatan tetapi juga menambah biaya. Untuk aplikasi dengan trafik tinggi, warehouse khusus mungkin menjadi pilihan terbaik. Di sisi lain, aplikasi ringan sering dapat berjalan pada warehouse yang lebih kecil tanpa masalah performa.
Arsitektur aplikasi
Arsitektur aplikasi juga penting. Pemuatan data progresif dan manajemen state dapat membuat aplikasi lebih responsif, terutama saat bekerja dengan dataset besar. Usahakan jangan memuat seluruh aplikasi sekaligus jika terdapat banyak komponen. Muat hanya yang diperlukan pengguna pada saat itu. Merancang aplikasi dengan mempertimbangkan keterbatasan sumber daya mencegah masalah seperti batas ukuran pesan atau memori.
Kasus Penggunaan dan Contoh Aplikasi Streamlit in Snowflake
Di luar dashboard dan aplikasi data sederhana, Streamlit in Snowflake dapat memanfaatkan alat yang kuat untuk machine learning, AI, business intelligence, dan NLP. Mari soroti beberapa kasus penggunaan.
Business intelligence dan visualisasi data
Bagi tim analitik, Streamlit in Snowflake adalah cara untuk membangun dashboard interaktif dan alat pelaporan. Terhubung ke database Snowflake Anda memungkinkan pembaruan real-time ke dashboard untuk pengambilan keputusan yang lebih baik. Anda dapat men-deploy aplikasi serupa yang ditujukan untuk departemen dan tim berbeda dengan cepat dan mudah. Contohnya termasuk pelacak inventaris, dashboard penggunaan komputasi, atau ringkasan kinerja eksekutif. Misalnya, kita dapat membangun analitik call center dengan integrasi Snowflake Cortex dan Snowpark ke dalam aplikasi Streamlit dengan mengambil transkripsi data panggilan dan menghasilkan analitik atas panggilan tersebut.
Machine learning dan AI
Untuk benar-benar memanfaatkan data Anda, aplikasi Streamlit dapat dirancang untuk wawasan machine learning dan AI. Misalnya, tim machine learning dapat men-deploy aplikasi interaktif yang menyajikan model untuk peramalan permintaan, segmentasi pelanggan, atau deteksi anomali. Dengan Cortex AI, pengembang juga dapat membuat aplikasi retrieval augmented generation (RAG) atau alat AI percakapan. Salah satu implementasi hebat menambahkan model PyTorch yang menyediakan upsell terarah untuk pelanggan berdasarkan profil individu mereka, semuanya dibungkus dalam aplikasi inferensi visual.
NLP dan analitik lanjutan
Untuk mendapatkan wawasan dari umpan balik berbasis teks seperti chat dan email, natural language processing adalah jalannya. Dengan menggunakan pustaka seperti spaCy, NLTK, atau pemrosesan teks Cortex AI internal Snowflake, kita dapat mengambil seluruh informasi teks ini dan membangun alat untuk analisis sentimen, named entity recognition, dan solusi NLP lainnya. Misalnya, kita dapat menggunakan Snowflake Cortex untuk menangani sebagian besar analisis NLP, seperti peringkasan dan analisis sentimen. Hasilnya kemudian mengisi database yang menyediakan analitik atas ulasan dan chat dukungan menggunakan Streamlit in Snowflake.
Aplikasi pengumpulan data dan input
Aplikasi Streamlit juga cocok untuk pengumpulan data dan manajemen kualitas, seperti alat anotasi atau antarmuka input kolaboratif. Meskipun unggahan data dibatasi hingga 200MB, kita dapat menyediakan tempat bagi pengguna untuk mengunggah dataset atau dokumen kecil guna diproses atau diringkas dalam aplikasi kita. Kemungkinannya tidak terbatas!
Integrasi dengan Ekosistem Snowflake
Keberadaan Streamlit di Snowflake sangat kuat berkat banyaknya integrasi yang Anda dapatkan dalam ekosistem seperti Snowpark dan data sharing.
Integrasi dengan Snowpark
Snowpark memudahkan analisis di Python dengan Snowflake. Ia memfasilitasi pemrosesan data tingkat lanjut, komputasi terdistribusi, dan fungsi kustom. Karena kita dapat menggunakan dataframe Snowpark secara native dalam aplikasi Streamlit in Snowflake kita, kita dapat memanfaatkannya dengan mudah dengan overhead yang sangat kecil. Menggunakan hal-hal seperti stored procedure dan UDF di lingkungan Snowflake Anda menjadi mudah dengan objek udf Snowpark.
Berbagi data dan otomatisasi
Berbagi data di dalam Snowflake itu sederhana, dan dengan UI Snowsight, hanya perlu beberapa klik. Dengan menambahkan Snowflake Tasks dan fitur berbasis peristiwa, pengembang juga dapat dengan mudah mengotomatiskan alur kerja. Misalnya, Anda dapat memicu pembaruan aplikasi saat data baru tiba, melakukan pemeriksaan data untuk memastikan tidak ada yang rusak, dan menjaga data tetap segar.
Bila digabungkan dengan dbt, Anda dapat membuat alur kerja ujung ke ujung di mana transformasi data mengalir langsung ke aplikasi Streamlit, memastikan pembaruan real-time bagi pengguna.
Penagihan dan Pertimbangan Biaya
Seperti semua platform cloud, penagihan dan pertimbangan biaya itu penting. Aplikasi Streamlit yang mahal cenderung kurang digunakan, jadi memikirkan biaya terlebih dahulu memastikan proses pengembangan yang lancar.
Memahami biaya untuk Streamlit in Snowflake
Biaya Streamlit in Snowflake sama seperti proses lainnya di Snowflake. Jika Anda memiliki database/skema khusus untuk Streamlit, Anda akan memiliki biaya penyimpanan biasa yang terkait dengan data tersebut. Seperti disebutkan sebelumnya, Anda kemungkinan besar ingin membuat warehouse yang dialokasikan khusus untuk layanan Streamlit in Snowflake sehingga Anda juga dapat melacak biaya komputasinya. Ukuran warehouse yang lebih besar, konkurensi aplikasi (beberapa sesi pengguna), dan volume data akan menjadi pendorong utama biaya Anda.
Mengoptimalkan penggunaan sumber daya
Untuk mengendalikan pengeluaran, menetapkan ukuran warehouse yang tepat itu penting. Aplikasi kecil dengan beban kerja ringan sebaiknya menghindari penggunaan warehouse yang terlalu besar. Caching Streamlit membantu meminimalkan kueri berulang dalam sesi, yang menurunkan penggunaan komputasi. Snowflake juga menyediakan alat pemantauan yang melacak konsumsi sehingga Anda dapat melakukan penyesuaian biaya berbasis data.
Keterbatasan dan Pertimbangan
Meskipun Streamlit in Snowflake kuat, ada beberapa batasan yang perlu diperhatikan, khususnya terkait paket eksternal dan unggahan file.
Pembatasan content security policy (CSP)
Platform menerapkan content security policies yang ketat untuk memastikan keamanan data. Hal-hal seperti skrip khusus, gaya, dan komponen yang memerlukan domain eksternal kemungkinan besar akan diblokir. Pastikan komponen apa pun yang Anda gunakan tidak memerlukan panggilan eksternal. Ini sangat meningkatkan keamanan aplikasi Anda, tetapi memang membatasi beberapa kustomisasi yang mungkin biasa Anda lakukan jika berasal dari implementasi Streamlit milik sendiri.
Keterbatasan transfer data dan caching
Menangani dataset besar bisa menjadi tantangan karena beberapa keterbatasan pada caching dan transfer pesan. Keterbatasan utama caching adalah berbasis sesi dan bukan berbasis pengguna. Jadi pengguna yang kembali ke aplikasi dan memulai sesi baru harus memuat ulang data. Pertimbangkan dengan cermat pengguna Anda dan apakah mereka harus memulai sesi baru berkali-kali. Jika ya, pikirkan bagaimana Anda dapat meminimalkan beban data antar sesi.
Meskipun tidak ada batas eksplisit pada ukuran kueri atau jumlah data dalam memori, pesan memiliki batas 32 MB. Ini berarti menampilkan dataframe besar dan peta yang sangat kompleks dapat menjadi faktor pembatas. Pertimbangkan hal yang penting untuk ditampilkan kepada pengguna dan apa yang dapat disederhanakan.
Pembatasan unggahan file dan penyimpanan eksternal
Unggahan file dapat berfungsi, tetapi dibatasi hingga ukuran 200MB. Anda juga tidak akan dapat bekerja langsung dengan external stage dan harus memindahkan data ke Snowflake terlebih dahulu. Jadi menarik data langsung dari Apache Iceberg tidak akan berfungsi, tetapi menarik dari internal data lake untuk data tersebut bisa dilakukan.
Selain itu, fungsionalitas unggah file terbatas ukurannya, dan external stage saat ini tidak didukung, sehingga membatasi cara aplikasi menangani file.
Kesimpulan
Streamlit in Snowflake menawarkan cara yang kuat dan terintegrasi untuk membangun dan men-deploy aplikasi data interaktif tanpa meninggalkan lingkungan Snowflake Anda. Solusi ini menggabungkan keamanan, skalabilitas, dan kemudahan penggunaan sambil mendukung integrasi lanjutan dengan Snowpark, Cortex AI, dan dbt.
Meskipun ada keterbatasan, seperti pembatasan pada sumber daya eksternal dan unggahan file, manfaat iterasi cepat, infrastruktur terkelola, dan berbagi yang mulus menjadikan SiS sebagai platform transformatif bagi tim data. Praktisi pemula dapat memulai dari hal kecil—mencoba dashboard sederhana—dan menskalakannya ke aplikasi AI dan analitik siap-perusahaan. Untuk informasi lebih lanjut tentang Snowflake, lihat tautan berikut:
Apa itu Snowflake Streamlit dan apa bedanya dengan Streamlit biasa?⌄
Snowflake Streamlit adalah versi Streamlit yang sepenuhnya dikelola dan berjalan secara native di dalam Snowflake, sehingga tidak perlu server atau infrastruktur terpisah. Streamlit biasa mengharuskan Anda menjalankan/menjadi host sendiri.
Seberapa banyak pengetahuan Python yang dibutuhkan untuk memulai?⌄
Pengetahuan dasar Python sudah cukup. Jika Anda bisa menulis fungsi, mengimpor pustaka, dan memahami dataframe (misalnya dengan Pandas), Anda dapat membangun aplikasi sederhana dengan cepat.
Apa perbedaan utama antara deployment melalui Snowsight dan CLI?⌄
Snowsight bersifat visual dan ramah pemula, paling cocok untuk prototyping. CLI lebih baik untuk otomatisasi, kontrol versi, dan pipeline CI/CD.
Apakah menjalankan aplikasi Streamlit di Snowflake memengaruhi konsumsi kredit saya?⌄
Ya. Karena aplikasi Streamlit melakukan kueri data dari Snowflake, menjalankannya akan mengonsumsi kredit komputasi, mirip dengan menjalankan kueri. Mengoptimalkan kueri membantu mengelola biaya.
Apakah mungkin mengintegrasikan aplikasi Snowflake Streamlit dengan GitHub atau CI/CD?⌄
Ya. Dengan Snowflake CLI, Anda dapat mengintegrasikan deployment aplikasi ke dalam pipeline CI/CD (misalnya, GitHub Actions), sehingga memudahkan otomatisasi pembaruan saat kode berubah.
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.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Coba langsung Snowflake! Pelajari cara mengakses, memodelkan, dan mengelola data dalam pengenalan interaktif ini untuk insinyur data, analis, dan profesional BI.
Pelajari cara mendesain, mengakses data, dan membangun di Snowflake - menguasai SQL Snowflake untuk transformasi dan pemodelan agar menjadi Data Engineer yang siap kerja.
Bangun aplikasi yang didukung oleh kecerdasan buatan (AI) dengan Snowflake. Mengelola data master dan kecerdasan buatan generatif untuk menciptakan solusi cerdas di cloud.
Snowflake adalah platform data berbasis cloud yang populer dan andal, sementara Streamlit adalah framework Python open-source yang dirancang untuk membangun aplikasi web data. Streamlit in Snowflake (SiS) adalah solusi terintegrasi yang memungkinkan Anda membangun dan men-deploy aplikasi data langsung di dalam ekosistem Snowflake. Alih-alih harus menangani berbagai alat terpisah, Anda dapat menggunakan Python dan infrastruktur Snowflake untuk membuat aplikasi interaktif dengan cepat.
Tutorial ini akan membahas apa itu Streamlit in Snowflake, fitur utamanya, langkah penyiapan, strategi deployment, keamanan, kiat performa, dan kasus penggunaan nyata. Pada akhirnya, Anda akan memiliki panduan jelas untuk membangun dan meluncurkan aplikasi data pertama Anda. Pastikan untuk meninjau dasar-dasar Snowflake dan antarmukanya. Saya juga menyarankan untuk mencoba Streamlit di Python di luar Snowflake agar lebih memahami fungsinya melalui tutorial Streamlit ini.
Apa Itu Streamlit in Snowflake?
Streamlit in Snowflake memungkinkan pembuatan aplikasi interaktif yang terhubung langsung ke data Snowflake Anda tanpa meninggalkan platform.
Gambaran umum Streamlit in Snowflake
Streamlit in Snowflake menggabungkan kesederhanaan Streamlit dengan skalabilitas Snowflake. Secara tradisional, membangun aplikasi memerlukan server eksternal, API, dan integrasi yang rumit. Streamlit merangkum fungsionalitas inti menjadi beberapa API berorientasi objek dan integrasi Python. Proses deployment kemudian dialihkan ke Snowflake menggunakan Snowsight.
Ini menghilangkan kebutuhan akan infrastruktur tambahan dan menyediakan lingkungan terpadu yang terintegrasi mulus dengan Snowpark, Cortex AI, serta data Snowflake Anda. Artinya, pengembang Python dan tim data bekerja dari sumber yang sama tanpa beban tambahan untuk memindahkan data atau kode.
Konteks historis
Pada 2022, Snowflake mengakuisisi Streamlit untuk mendekatkan pengembangan aplikasi interaktif ke data perusahaan. Akuisisi ini mempertahankan visi open source Streamlit untuk memberi pengembang kemampuan menggunakan Python guna membuat aplikasi web yang menarik sekaligus terintegrasi dengan salah satu platform data terkuat yang tersedia saat ini. Hal ini memungkinkan perusahaan memanfaatkan Streamlit secara fleksibel dengan kekhawatiran keamanan yang lebih kecil dan menyatukan proses pengembangan aplikasi.
Filosofi inti
Filosofi SiS berfokus pada pemeliharaan tingkat keamanan dan tata kelola yang sama seperti yang Anda harapkan dari Snowflake sambil memberikan kemudahan menggunakan Streamlit untuk membangun aplikasi web data. Karena seluruh data tetap berada di dalam Snowflake, Anda mendapatkan jaminan keamanan dan keselamatan yang sama seperti yang diharapkan.
Keunggulan utamanya adalah memastikan framework Python tetap sama dan memberikan pengalaman serupa di Snowflake seperti saat digunakan di luar Snowflake. Ini membuat SiS mudah didekati oleh pengembang yang pernah bekerja dengan Streamlit sebelumnya atau yang memiliki pengalaman Python dan ingin memanfaatkan keterampilan yang ada untuk membangun aplikasi web bagi data Snowflake.
Fitur dan Kapabilitas Utama Streamlit in Snowflake
Streamlit in Snowflake mempertahankan fitur cloud utama Snowflake, seperti layanan terkelola sepenuhnya dan kolaborasi yang mudah. Ia juga memiliki fungsionalitas Streamlit untuk visualisasi dan iterasi cepat sambil terintegrasi dengan infrastruktur.
Layanan terkelola sepenuhnya
Snowflake mengelola seluruh infrastruktur di balik layar, sehingga Anda tidak perlu khawatir tentang server, penskalaan, atau stabilitas. Aplikasi berjalan dengan interaktivitas real-time, melakukan penskalaan otomatis berdasarkan penggunaan, dan mendapatkan manfaat dari keandalan bawaan Snowflake.
Integrasi dengan infrastruktur Snowflake
Aplikasi Streamlit di dalam Snowflake terhubung secara native dengan Snowpark, Cortex AI, dan database. Misalnya, Anda dapat mengintegrasikan Cortex AI Analyst ke dalam aplikasi Streamlit Anda, memungkinkan pengguna mengajukan pertanyaan dalam bahasa alami tentang data dan mendapatkan jawaban secara native di dashboard.
Fitur Snowflake lainnya, seperti caching bawaan, meminimalkan kueri berulang, sementara peningkatan UI seperti mode gelap dan komponen kustom meningkatkan pengalaman pengguna. Otentikasi dan koneksi aman ditangani secara otomatis melalui protokol otentikasi Snowflake. Sensitivitas data dapat dikelola menggunakan kontrol berbasis peran Snowflake.
Hal ini menyederhanakan tugas pengelolaan data dan memungkinkan pengembang fokus membangun alat.
Visualisasi interaktif dan iterasi cepat
Salah satu kekuatan terbesar Streamlit adalah kemampuannya mengubah skrip Python sederhana menjadi aplikasi interaktif dalam hitungan menit. Di Snowflake, Anda dapat melakukan pratinjau dan iterasi aplikasi secara langsung, memperbarui kode dan melihat hasil live tanpa menunggu deployment yang lama.
Berbagi dan kolaborasi
Aplikasi Streamlit dapat dibagikan langsung dengan pengguna di dalam Snowflake. Ini memudahkan berbagi aplikasi ke berbagai tim menggunakan peran atau anggota individu. Kolaborasi terbangun dalam alur kerja, memungkinkan beberapa anggota tim bekerja, menguji, dan men-deploy aplikasi bersama.
Memulai dengan Streamlit in Snowflake
Memulai dengan SiS itu mudah, dan Anda dapat membuat aplikasi pertama dalam hitungan menit. Kita hanya perlu memastikan Anda memiliki izin dan pengetahuan yang tepat.
Prasyarat
Untuk membangun aplikasi Streamlit di Snowflake, Anda memerlukan akun Snowflake aktif dengan akses ke Snowsight, antarmuka web. pengantar Snowflake ini dapat menunjukkan cara menavigasi Snowsight. Anda sebaiknya memiliki pengetahuan dasar Python. Bahkan ada baiknya meninjau kursus pengantar Python ini untuk menyegarkan pengetahuan Anda.
Setelah Anda memiliki akses ke Snowflake, pastikan Anda memiliki izin berikut:
USAGEUSAGE,CREATE STREAMLIT,CREATE STAGEPenyiapan akun dan konfigurasi lingkungan
Mulailah dengan masuk ke Snowsight dan memilih atau membuat database dan skema tempat aplikasi Anda akan berada. Mulai dengan membuka
My Workspacedan membuka file SQL baru. Mari buat peran bernamastreamlit_creatoryang akan memiliki akses kestreamlit_schemapadastreamlit_database. Selain itu, kita akan membuat warehouse bernamastreamlit_whyang akan menjadi sumber komputasi utama untuk aplikasi Streamlit kita.Membangun Aplikasi Streamlit Pertama Anda
Agar lebih konkret, mari kita bahas aplikasi sederhana. Setelah akun Snowflake dan izin Anda siap, di Snowsight arahkan ke
PROJECTS>>Streamlit. Di jendela ini klik+ Streamlit Appdi kanan atas.Isi nama Aplikasi dengan nama apa pun yang Anda inginkan. Perbarui lokasi aplikasi agar menggunakan
STREAMLIT_DBdanSTREAMLIT_SCHEMA. Lalu pilih “Run on warehouse” kemudian pilih “STREAMLIT_WH” sebagaiApp Warehouse.Ini akan membuka editor yang menyertakan skrip kecil secara default. Aplikasi juga akan dijalankan otomatis dan menampilkan pratinjau.
Mari coba menambahkan sedikit data yang menarik bagi kita ke aplikasi. Letakkan potongan kode kecil ini di bagian bawah kode yang sudah ada:
Lalu klik tombol “Run” di kanan atas. Pratinjau dalam aplikasi ini akan diperbarui dan memproses data yang disediakan oleh tabel contoh. Seharusnya menampilkan tabel data dan grafik batang. Dari sini, Anda dapat menyesuaikan kueri, menambahkan filter, atau menyempurnakan UI dengan widget Streamlit.
Yang akan Anda perhatikan di sini adalah penggunaan Snowpark. Jika Anda belum pernah menggunakannya, Snowpark adalah pustaka Snowflake yang memungkinkan Anda memproses data Snowflake menggunakan bahasa pemrograman seperti Python. Saya sangat merekomendasikan pengantar Snowpark ini karena pengambilan data ke Streamlit sering kali memerlukan penggunaan Snowpark untuk berinteraksi dengan database Snowflake Anda.
Strategi dan Metode Deployment
Ada beberapa cara untuk men-deploy Streamlit in Snowflake. Yang termudah adalah menggunakan Snowsight, antarmuka web, tetapi Anda juga dapat menggunakan alat command-line interface (CLI). Selain itu, Anda dapat menambahkan alat alur kerja untuk membantu pengorganisasian proyek dan penskalaan deployment.
Deployment melalui Snowsight
Seperti ditunjukkan pada bagian sebelumnya, metode paling sederhana adalah melalui Snowsight, antarmuka web Snowflake. Nilai tambahnya adalah tampilan layar terbagi untuk mengedit dan mempratinjau aplikasi Anda secara real-time. Pengaturan ini ideal bagi pengembang yang menginginkan umpan balik langsung saat mengembangkan.
Deployment melalui CLI
Untuk skenario yang lebih lanjut, alat CLI memungkinkan Anda men-deploy aplikasi secara terprogram. Ini sangat berguna saat mengintegrasikan deployment aplikasi ke dalam pipeline continuous integration dan continuous delivery (CI/CD). Dengan mengikuti pendekatan pengembang yang lebih terstruktur, aplikasi dapat disimpan dalam folder proyek sebagai file
.pyseperti aplikasi Streamlit biasa bersama file.ymlyang mengendalikan lingkungan dan perintah Snowflake. Artinya, kita dapat menggunakan GitHub untuk melacak perubahan, menjalankan pengecekan otomatis, dan melakukan deployment tanpa hambatan.Integrasi dengan dbt dan alat alur kerja
Opsi lain adalah menggabungkan aplikasi Streamlit dengan alat alur kerja seperti dbt (data build tool), yang didukung secara native oleh Snowflake. Misalnya, dbt dapat mengelola alur kerja ETL inti Anda yang mengalir ke aplikasi Streamlit. Dalam proyek dbt yang sama, Anda dapat melakukan redeploy Streamlit secara otomatis sesuai kebutuhan agar selaras dengan alur kerja dbt Anda. Ini memungkinkan Anda menata alur kerja data yang kompleks dengan rapi ke dalam proyek dan menskalakan deployment seiring alur kerja Anda.
Arsitektur dan Implementasi Teknis
Mari bahas bagaimana Streamlit in Snowflake sebenarnya berfungsi.
Arsitektur teknis
Aplikasi Streamlit in Snowflake berjalan dalam lingkungan berbasis kontainer yang aman dan sepenuhnya dikelola oleh Snowflake. Desain ini memastikan aplikasi tetap terisolasi sambil mempertahankan koneksi aman ke sumber dan layanan data Snowflake. Seiring meningkatnya kompleksitas aplikasi atau bertambahnya ukuran database, Snowflake mengelola penskalaan di backend.
Manajemen warehouse
Saat Anda meluncurkan aplikasi, aplikasi akan menggunakan sumber daya komputasi dari warehouse yang Anda konfigurasikan. Sama seperti kueri SQL Anda, ukuran warehouse memengaruhi performa dan biaya, sehingga perencanaan sumber daya menjadi penting. Pengembang sering kali merasa berguna memiliki warehouse yang terikat ke aplikasi Streamlit mereka untuk penyusunan jejak yang lebih sederhana. Selain itu, Snowflake menggunakan internal stage untuk penyimpanan file yang aman, yang mencegah data bocor ke luar platform. Ini menyederhanakan pemasokan data ke aplikasi Anda sambil mempertahankan keamanan data.
Paket Python dan lingkungan
Lingkungan Python di SiS dikelola dan dikurasi demi keamanan. Hanya paket yang disetujui yang tersedia, dan pemasangan paket eksternal dibatasi. Selain itu, beberapa hal seperti skrip, gaya, font, dan penyematan iframe dibatasi demi alasan keamanan. Jika Anda memerlukan fungsionalitas di luar yang disediakan, Anda mungkin perlu mengimplementasikannya melalui Snowpark UDF atau mengandalkan pustaka Python yang sudah didukung oleh Snowflake.
Model Keamanan dan Izin
Syukurlah, SiS menggunakan banyak infrastruktur keamanan Snowflake yang sudah ada, seperti kontrol akses berbasis peran, berbagi, dan keamanan jaringan.
Kontrol akses berbasis peran (RBAC)
Snowflake memanfaatkan sistem kontrol akses berbasis peran (RBAC) untuk aplikasi Streamlit dan datanya. Mengakses data memerlukan hak
USAGEuntuk aplikasi Streamlit mana pun dan data dasarnya. Hanya peran dengan hakCREATE STREAMLITyang dapat membangun aplikasi, dan kepemilikan aplikasi terkait dengan izin tingkat skema. Ini memastikan kontrol yang jelas atas siapa yang dapat mengembangkan dan mengelola aplikasi.Berbagi dan kontrol akses
Berbagi aplikasi juga dikendalikan dengan ketat. Anda dapat memberikan atau membatasi akses ke aplikasi berdasarkan peran pengguna. Untuk eksekusi SQL, mekanismenya mengikuti izin berbasis peran yang sama. SQL dijalankan melalui aplikasi Streamlit dan tidak memungkinkan pengembang menjalankan kueri SQL pada database tanpa izin yang semestinya.
Keamanan jaringan dan konten
Di sisi jaringan, Snowflake menerapkan content security policies (CSP) yang ketat. Kebijakan ini mencegah aplikasi memuat skrip, gaya, atau sumber daya eksternal yang tidak sah, sehingga mengurangi risiko eksfiltrasi data atau integrasi yang tidak aman. Dengan meminimalkan pustaka eksternal yang diimpor ke lingkungan, risiko celah keamanan berkurang dan privasi data serta pengguna terlindungi.
Optimasi Performa Snowflake Streamlit
Seiring aplikasi Anda menjadi lebih kompleks, optimasi yang tepat penting untuk menjaga fungsionalitas yang baik.
Optimasi kueri dan caching
Membangun aplikasi yang efisien memerlukan perhatian pada kueri dan sumber daya komputasi. Ada baiknya menguji kueri Anda di luar aplikasi Streamlit (pada warehouse serupa) untuk memahami upaya komputasi yang dibutuhkan kueri Anda. Menulis kueri SQL yang teroptimasi penting untuk mencegah bottleneck.
Fungsi caching bawaan Streamlit
st.cache_datadanst.cache_resourcemembantu mengurangi komputasi berulang dan pemuatan ulang data. Namun, ada catatan bahwast.cache_datadanst.cache_resourcebelum sepenuhnya didukung. Keduanya hanya memungkinkan caching berbasis sesi, yang berarti setiap kali pengguna membuka sesi baru, kueri dan data harus dimuat ulang. Perlu diingat hal ini dan pastikan untuk mengoptimalkan kueri Anda semaksimal mungkin.Pemilihan dan konfigurasi warehouse
Pemilihan warehouse berperan besar dalam responsivitas aplikasi. Warehouse yang lebih besar meningkatkan kecepatan tetapi juga menambah biaya. Untuk aplikasi dengan trafik tinggi, warehouse khusus mungkin menjadi pilihan terbaik. Di sisi lain, aplikasi ringan sering dapat berjalan pada warehouse yang lebih kecil tanpa masalah performa.
Arsitektur aplikasi
Arsitektur aplikasi juga penting. Pemuatan data progresif dan manajemen state dapat membuat aplikasi lebih responsif, terutama saat bekerja dengan dataset besar. Usahakan jangan memuat seluruh aplikasi sekaligus jika terdapat banyak komponen. Muat hanya yang diperlukan pengguna pada saat itu. Merancang aplikasi dengan mempertimbangkan keterbatasan sumber daya mencegah masalah seperti batas ukuran pesan atau memori.
Kasus Penggunaan dan Contoh Aplikasi Streamlit in Snowflake
Di luar dashboard dan aplikasi data sederhana, Streamlit in Snowflake dapat memanfaatkan alat yang kuat untuk machine learning, AI, business intelligence, dan NLP. Mari soroti beberapa kasus penggunaan.
Business intelligence dan visualisasi data
Bagi tim analitik, Streamlit in Snowflake adalah cara untuk membangun dashboard interaktif dan alat pelaporan. Terhubung ke database Snowflake Anda memungkinkan pembaruan real-time ke dashboard untuk pengambilan keputusan yang lebih baik. Anda dapat men-deploy aplikasi serupa yang ditujukan untuk departemen dan tim berbeda dengan cepat dan mudah. Contohnya termasuk pelacak inventaris, dashboard penggunaan komputasi, atau ringkasan kinerja eksekutif. Misalnya, kita dapat membangun analitik call center dengan integrasi Snowflake Cortex dan Snowpark ke dalam aplikasi Streamlit dengan mengambil transkripsi data panggilan dan menghasilkan analitik atas panggilan tersebut.
Machine learning dan AI
Untuk benar-benar memanfaatkan data Anda, aplikasi Streamlit dapat dirancang untuk wawasan machine learning dan AI. Misalnya, tim machine learning dapat men-deploy aplikasi interaktif yang menyajikan model untuk peramalan permintaan, segmentasi pelanggan, atau deteksi anomali. Dengan Cortex AI, pengembang juga dapat membuat aplikasi retrieval augmented generation (RAG) atau alat AI percakapan. Salah satu implementasi hebat menambahkan model PyTorch yang menyediakan upsell terarah untuk pelanggan berdasarkan profil individu mereka, semuanya dibungkus dalam aplikasi inferensi visual.
NLP dan analitik lanjutan
Untuk mendapatkan wawasan dari umpan balik berbasis teks seperti chat dan email, natural language processing adalah jalannya. Dengan menggunakan pustaka seperti spaCy, NLTK, atau pemrosesan teks Cortex AI internal Snowflake, kita dapat mengambil seluruh informasi teks ini dan membangun alat untuk analisis sentimen, named entity recognition, dan solusi NLP lainnya. Misalnya, kita dapat menggunakan Snowflake Cortex untuk menangani sebagian besar analisis NLP, seperti peringkasan dan analisis sentimen. Hasilnya kemudian mengisi database yang menyediakan analitik atas ulasan dan chat dukungan menggunakan Streamlit in Snowflake.
Aplikasi pengumpulan data dan input
Aplikasi Streamlit juga cocok untuk pengumpulan data dan manajemen kualitas, seperti alat anotasi atau antarmuka input kolaboratif. Meskipun unggahan data dibatasi hingga 200MB, kita dapat menyediakan tempat bagi pengguna untuk mengunggah dataset atau dokumen kecil guna diproses atau diringkas dalam aplikasi kita. Kemungkinannya tidak terbatas!
Integrasi dengan Ekosistem Snowflake
Keberadaan Streamlit di Snowflake sangat kuat berkat banyaknya integrasi yang Anda dapatkan dalam ekosistem seperti Snowpark dan data sharing.
Integrasi dengan Snowpark
Snowpark memudahkan analisis di Python dengan Snowflake. Ia memfasilitasi pemrosesan data tingkat lanjut, komputasi terdistribusi, dan fungsi kustom. Karena kita dapat menggunakan dataframe Snowpark secara native dalam aplikasi Streamlit in Snowflake kita, kita dapat memanfaatkannya dengan mudah dengan overhead yang sangat kecil. Menggunakan hal-hal seperti stored procedure dan UDF di lingkungan Snowflake Anda menjadi mudah dengan objek
udfSnowpark.Berbagi data dan otomatisasi
Berbagi data di dalam Snowflake itu sederhana, dan dengan UI Snowsight, hanya perlu beberapa klik. Dengan menambahkan Snowflake Tasks dan fitur berbasis peristiwa, pengembang juga dapat dengan mudah mengotomatiskan alur kerja. Misalnya, Anda dapat memicu pembaruan aplikasi saat data baru tiba, melakukan pemeriksaan data untuk memastikan tidak ada yang rusak, dan menjaga data tetap segar.
Bila digabungkan dengan dbt, Anda dapat membuat alur kerja ujung ke ujung di mana transformasi data mengalir langsung ke aplikasi Streamlit, memastikan pembaruan real-time bagi pengguna.
Penagihan dan Pertimbangan Biaya
Seperti semua platform cloud, penagihan dan pertimbangan biaya itu penting. Aplikasi Streamlit yang mahal cenderung kurang digunakan, jadi memikirkan biaya terlebih dahulu memastikan proses pengembangan yang lancar.
Memahami biaya untuk Streamlit in Snowflake
Biaya Streamlit in Snowflake sama seperti proses lainnya di Snowflake. Jika Anda memiliki database/skema khusus untuk Streamlit, Anda akan memiliki biaya penyimpanan biasa yang terkait dengan data tersebut. Seperti disebutkan sebelumnya, Anda kemungkinan besar ingin membuat warehouse yang dialokasikan khusus untuk layanan Streamlit in Snowflake sehingga Anda juga dapat melacak biaya komputasinya. Ukuran warehouse yang lebih besar, konkurensi aplikasi (beberapa sesi pengguna), dan volume data akan menjadi pendorong utama biaya Anda.
Mengoptimalkan penggunaan sumber daya
Untuk mengendalikan pengeluaran, menetapkan ukuran warehouse yang tepat itu penting. Aplikasi kecil dengan beban kerja ringan sebaiknya menghindari penggunaan warehouse yang terlalu besar. Caching Streamlit membantu meminimalkan kueri berulang dalam sesi, yang menurunkan penggunaan komputasi. Snowflake juga menyediakan alat pemantauan yang melacak konsumsi sehingga Anda dapat melakukan penyesuaian biaya berbasis data.
Keterbatasan dan Pertimbangan
Meskipun Streamlit in Snowflake kuat, ada beberapa batasan yang perlu diperhatikan, khususnya terkait paket eksternal dan unggahan file.
Pembatasan content security policy (CSP)
Platform menerapkan content security policies yang ketat untuk memastikan keamanan data. Hal-hal seperti skrip khusus, gaya, dan komponen yang memerlukan domain eksternal kemungkinan besar akan diblokir. Pastikan komponen apa pun yang Anda gunakan tidak memerlukan panggilan eksternal. Ini sangat meningkatkan keamanan aplikasi Anda, tetapi memang membatasi beberapa kustomisasi yang mungkin biasa Anda lakukan jika berasal dari implementasi Streamlit milik sendiri.
Keterbatasan transfer data dan caching
Menangani dataset besar bisa menjadi tantangan karena beberapa keterbatasan pada caching dan transfer pesan. Keterbatasan utama caching adalah berbasis sesi dan bukan berbasis pengguna. Jadi pengguna yang kembali ke aplikasi dan memulai sesi baru harus memuat ulang data. Pertimbangkan dengan cermat pengguna Anda dan apakah mereka harus memulai sesi baru berkali-kali. Jika ya, pikirkan bagaimana Anda dapat meminimalkan beban data antar sesi.
Meskipun tidak ada batas eksplisit pada ukuran kueri atau jumlah data dalam memori, pesan memiliki batas 32 MB. Ini berarti menampilkan dataframe besar dan peta yang sangat kompleks dapat menjadi faktor pembatas. Pertimbangkan hal yang penting untuk ditampilkan kepada pengguna dan apa yang dapat disederhanakan.
Pembatasan unggahan file dan penyimpanan eksternal
Unggahan file dapat berfungsi, tetapi dibatasi hingga ukuran 200MB. Anda juga tidak akan dapat bekerja langsung dengan external stage dan harus memindahkan data ke Snowflake terlebih dahulu. Jadi menarik data langsung dari Apache Iceberg tidak akan berfungsi, tetapi menarik dari internal data lake untuk data tersebut bisa dilakukan.
Selain itu, fungsionalitas unggah file terbatas ukurannya, dan external stage saat ini tidak didukung, sehingga membatasi cara aplikasi menangani file.
Kesimpulan
Streamlit in Snowflake menawarkan cara yang kuat dan terintegrasi untuk membangun dan men-deploy aplikasi data interaktif tanpa meninggalkan lingkungan Snowflake Anda. Solusi ini menggabungkan keamanan, skalabilitas, dan kemudahan penggunaan sambil mendukung integrasi lanjutan dengan Snowpark, Cortex AI, dan dbt.
Meskipun ada keterbatasan, seperti pembatasan pada sumber daya eksternal dan unggahan file, manfaat iterasi cepat, infrastruktur terkelola, dan berbagi yang mulus menjadikan SiS sebagai platform transformatif bagi tim data. Praktisi pemula dapat memulai dari hal kecil—mencoba dashboard sederhana—dan menskalakannya ke aplikasi AI dan analitik siap-perusahaan. Untuk informasi lebih lanjut tentang Snowflake, lihat tautan berikut: