


pengenalan
Pada penghujung Julai 2024, Current_User dan Dasar Akses Baris tersedia dalam Streamlit in Snowflake.
Bahagian menarik dalam kemas kini ini ialah kini mudah dan selamat untuk mengenal pasti pengguna Snowflake yang disambungkan ke aplikasi dan menyesuaikan pemprosesan untuk setiap pengguna.
Tanpa perlu menyediakan mekanisme log masuk tersuai atau jadual pengurusan pengguna, anda boleh memperibadikan satu aplikasi untuk setiap pengguna dengan cara seperti:
- Menukar paparan aplikasi untuk setiap pengguna
- Menyediakan papan pemuka analisis diperibadikan untuk setiap pengguna
- Menggunakan dasar akses baris untuk mendapatkan hasil keluaran pertanyaan yang berbeza untuk setiap pengguna (Edisi Perusahaan dan ke atas)
Dalam siaran ini, kami akan membuat senarai Tugasan mudah yang memaparkan maklumat pengguna individu.
Nota: Catatan ini mewakili pandangan peribadi saya dan bukan pandangan Snowflake.
Gambaran Keseluruhan Ciri
Matlamat
- Urus senarai Tugasan peribadi menggunakan apl kongsi tunggal
- Gunakan dasar akses baris untuk menghalang Tugasan orang lain daripada dipaparkan
Imej Selesai
Skrin pengguna TKANNO
Skrin TARO pengguna
Prasyarat
- Akaun Snowflake
- Akaun Edisi Perusahaan diperlukan untuk menggunakan dasar akses baris
Nota
- Streamlit dalam Snowflake berjalan dengan keistimewaan pemilik, jadi Current_Role akan sama dengan peranan aplikasi Streamlit in Snowflake. (Oleh itu, ia tidak boleh digunakan untuk pemperibadian)
Prosedur
Buat jadual untuk menyimpan senarai Tugasan
Laksanakan arahan berikut daripada lembaran kerja:
-- Create ToDo list table CREATE TABLE IF NOT EXISTS todo_list ( id INT AUTOINCREMENT, task VARCHAR(255), status VARCHAR(20), due_date DATE, completed_date DATE, owner VARCHAR(50) );
Buat dasar akses baris
Dasar ini mengembalikan baris yang pemilik dalam jadual todo_list sepadan dengan current_user yang disambungkan ke aplikasi Streamlit in Snowflake.
Laksanakan arahan berikut daripada lembaran kerja:
-- Create row access policy CREATE ROW ACCESS POLICY IF NOT EXISTS todo_row_access_policy AS (owner VARCHAR) RETURNS BOOLEAN -> owner = CURRENT_USER();
Gunakan dasar akses baris
Laksanakan arahan berikut daripada lembaran kerja:
-- Apply row access policy ALTER TABLE todo_list ADD ROW ACCESS POLICY todo_row_access_policy ON (owner);
Ini melengkapkan operasi lembaran kerja.
Jalankan apl Streamlit dalam Snowflake
Buat Streamlit baharu dalam apl Snowflake dan salin & tampal kod berikut:
Barisan 14 ialah tempat pengguna semasa yang disambungkan ke apl itu diambil sebagai rentetan.
import streamlit as st from snowflake.snowpark.context import get_active_session import pandas as pd # Layout settings st.set_page_config( layout="wide" ) # Get Snowflake session session = get_active_session() # Get current user current_user = session.sql("SELECT CURRENT_USER()").collect()[0][0] # Get ToDo list def get_todo_list(): return session.table("todo_list").to_pandas() # Add or update task def upsert_task(task_id, task, status, due_date, completed_date): due_date_sql = f"'{due_date}'" if due_date else "NULL" completed_date_sql = f"'{completed_date}'" if completed_date else "NULL" if task_id: session.sql(f""" UPDATE todo_list SET task = '{task}', status = '{status}', due_date = {due_date_sql}, completed_date = {completed_date_sql} WHERE id = {task_id} """).collect() else: session.sql(f""" INSERT INTO todo_list (task, status, owner, due_date, completed_date) VALUES ('{task}', '{status}', '{current_user}', {due_date_sql}, {completed_date_sql}) """).collect() # Delete task def delete_task(task_id): session.sql(f"DELETE FROM todo_list WHERE id = {task_id}").collect() # Main function def main(): st.title(f"{current_user}'s Personal Dashboard") # Task list st.subheader(f"{current_user}'s ToDo List") todo_df = get_todo_list() # Display header col1, col2, col3, col4, col5 = st.columns([3, 2, 2, 2, 2]) col1.write("Task") col2.write("Status") col3.write("Due Date") col4.write("Completed Date") col5.write("Delete") # Display task list for _, row in todo_df.iterrows(): col1, col2, col3, col4, col5 = st.columns([3, 2, 2, 2, 2]) with col1: task = st.text_input("task", value=row['TASK'], key=f"task_{row['ID']}", label_visibility="collapsed") with col2: status = st.selectbox("status", ["Pending", "In Progress", "Completed"], index=["Pending", "In Progress", "Completed"].index(row['STATUS']), key=f"status_{row['ID']}", label_visibility="collapsed") with col3: due_date = st.date_input("due_date", value=pd.to_datetime(row['DUE_DATE']).date() if pd.notna(row['DUE_DATE']) else None, key=f"due_date_{row['ID']}", label_visibility="collapsed") with col4: completed_date = st.date_input("comp_date", value=pd.to_datetime(row['COMPLETED_DATE']).date() if pd.notna(row['COMPLETED_DATE']) else None, key=f"completed_date_{row['ID']}", label_visibility="collapsed") with col5: if st.button("Delete", key=f"delete_{row['ID']}"): delete_task(row['ID']) st.experimental_rerun() # Update database immediately if values change if task != row['TASK'] or status != row['STATUS'] or due_date != row['DUE_DATE'] or completed_date != row['COMPLETED_DATE']: upsert_task(row['ID'], task, status, due_date, completed_date) st.experimental_rerun() # Add new task st.subheader("Add New Task") new_task = st.text_input("New Task") new_status = st.selectbox("Status", ["Pending", "In Progress", "Completed"]) new_due_date = st.date_input("Due Date") if st.button("Add"): upsert_task(None, new_task, new_status, new_due_date, None) st.success("New task added") st.experimental_rerun() # Main process if __name__ == "__main__": main()
Kesimpulan
Apa pendapat anda? Dengan menggabungkan Current_User dan dasar akses baris, anda boleh membuat aplikasi selamat yang diperibadikan untuk setiap pengguna dengan langkah mudah. Ini membuka kemungkinan untuk mencipta aplikasi yang lebih mesra pengguna berdasarkan idea anda.
Sesetengah idea lanjutan termasuk menambah maklumat Current_User sebagai tandatangan semasa menulis pada jadual melalui Streamlit in Snowflake, atau menggunakan maklumat diperibadikan sebagai konteks untuk Cortex LLM untuk mencipta pembantu peribadi.
Sila cuba mencabar diri anda dengan penggunaan Current_User yang menarik!
Pengumuman
Kepingan Salji Apakah Kemas Kini Baharu pada X
Saya berkongsi kemas kini Snowflake's What's New pada X. Sila ikuti jika anda berminat!
Versi Bahasa Inggeris
Snowflake What's New Bot (Versi Bahasa Inggeris)
https://x.com/snow_new_en
Versi Jepun
Bot Baharu Kepingan Salji (Versi Jepun)
https://x.com/snow_new_jp
Sejarah Perubahan
(20240914) Catatan awal
Artikel Asal Jepun
https://zenn.dev/tsubasa_tech/articles/a23029dfe97c46
Atas ialah kandungan terperinci Peribadikan untuk setiap pengguna dengan Streamlit in Snowflake (SiS). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Pythonlistscanstoreanydatatype, arraymoduleArraysstoreonetype, andnumpyarraysarefornumumericalcomputations.1) listsareversatileButlessMememory-efficient.2) arraymoduleArduleArrayRaysarememory-efficientforhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogenhomogen

KetikayyoUttemptToStoreAveFheWrongatatypeinapythonArray, anda akan menjadicounteratypeerror

Pythonlistsarepartofthestandardlibrary, sementara

Thescriptisrunningwiththewrongpythonversionduetoincorrectdefault interpretsettings

PythonArraysSupportVariousoperations: 1) SlicingExtractsSubsets, 2) Menambah/ExtendingAddSelements, 3) InsertingPlaceSelementSatSatSatSpecifics, 4) RemovingDeleteselements, 5) Sorting/ReversingChangesOrder,

NumpyarraysareessentialforapplicationRequiringeficientnumericalcomputationsanddatamanipulation.theyarecrucialindaSascience, machinelearning, fizik, kejuruteraan, danfinanceduetotheirabilitytOHandlelarge-Scaledataefisien.Forexample, infinancialanal

UseanArray.arrayoveralistinpythonwhendealingwithhomogeneousdata, criticalcode prestasi, orinterfacingwithccode.1) homogeneousdata: arrayssavemememorywithtypedelements.2)

Tidak, notalllistoperationsaresuportedByArrays, andviceversa.1) arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing, whyimpactsperformance.2) listsdonotguaranteeconstantTimeComplexityFordirectacesscesscesscesscesscesscesscesscesscesessd.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),
