制限およびライブラリの変更点¶
このトピックでは、Streamlitの機能がSnowflakeとオープンソースライブラリで異なる動作をする場合の制限と機能の動作変更について説明します。
To view release notes for each Streamlit version, see Streamlit documentation.
Limitations and changes for all runtimes¶
次の制限は、ランタイム環境に関係なくすべての Streamlit in Snowflake アプリに適用されます。
外部スクリプトを使用した カスタムコンポーネント
Using external stages isn't supported.
Replication isn't supported.
Using
.sofiles isn't supported.
Limitations and changes that vary by runtime¶
次のテーブルは、ウェアハウスのランタイムとコンテナのランタイムで異なる制限を比較しています(プレビュー)。ランタイム環境の詳細については、 Streamlitアプリのランタイム環境 をご参照ください。
制限事項 |
ウェアハウスランタイム |
コンテナランタイム(プレビュー) |
|---|---|---|
3.9、3.10、3.11 |
3.11のみ |
|
1.22+(制限付き選択) |
1.50+( |
|
Not supported |
サポート対象 |
|
32 MB |
構成可能 |
|
200 MB |
構成可能 |
|
外部製品規約への同意が必要です。 |
外部製品規約の対象外です。 |
|
単一セッションキャッシング。キャッシュされた値はセッション間で共有できません。 |
包括的にサポート。キャッシュデコレーターでセッションスコープを使用しない限り、キャッシュされた値はすべてのビューアーセッションで共有されます。 |
|
CREATE STREAMLITのレガシーパラメーターとしてサポートされます。 |
Not supported |
|
メンテナンス・ウィンドウ |
該当なし |
Snowpark Container Services メンテナンスウィンドウ の対象です。 |
静的ファイル使用 |
Not supported |
サポート対象 |
制限の詳細¶
サポートされていないStreamlit機能¶
The following Streamlit features are not fully supported in Streamlit in Snowflake:
-
The
page_title,page_icon, andmenu_itemsproperties of thest.set_page_configcommand aren't supported. config.tomlファイル:サポート対象とサポート対象外の構成オプションの概要については、 Streamlit構成 をご参照ください。
Loading external resources¶
すべての Streamlit in Snowflake アプリは、どのリソースをロードできるかを制限するコンテンツセキュリティポリシー(CSP)に準拠して実行されます。CSPは、外部ドメインからのコードのロードとiframeへの外部コンテンツの埋め込みをブロックします。また、 eval() のような一般に安全でないと考えられているフロントエンドの呼び出しもブロックします。CSP の情報については、 コンテンツセキュリティポリシー をご参照ください。
例えば、以下のコードは Python エラーなしで実行されますが、スクリプトはブラウザに読み込まれず、実行もされません。
# This won't work
st.html(
"<script src="http://www.example.com/example.js"></script>",
unsafe_allow_javascript=True
)
注釈
アプリ開発者は、 Snowflake's Shared Responsibility Model に従って、セキュリティチェックと Streamlit in Snowflake アプリコードのソフトウェアサプライチェーンに責任を負います。
カスタムコンポーネント¶
CSPの結果として、カスタムコンポーネントは、ウェアハウスおよびコンテナランタイムの外部ドメインからスクリプトをロードできません。パッケージベースのコンポーネントはアセットディレクトリを使用して静的コンテンツを提供するため、以下の違いが適用されます。
ウェアハウスのランタイムでは、アセットディレクトリを利用するパッケージベースのv2コンポーネントはサポートされていません。
コンテナランタイムでは、パッケージベースのv2コンポーネントが完全にサポートされています。
ウェアハウスランタイムでv2カスタムコンポーネントを使用するには、インラインHTML、CSS、JavaScriptで定義する必要があります。
注釈
Components imported from a third-party source are subject to the license attached to that component. You are responsible for ensuring that your use of a component is permitted by its license.
Snowflake doesn't build or maintain third-party components that you might import into Streamlit in Snowflake. Use of such components is at your own risk and is not subject to any warranties, service level agreements, or other similar guarantees by Snowflake.
クエリパラメーター¶
For st.query_params in Streamlit in Snowflake, a streamlit- prefix is added to each query parameter key in the URL. This prefix
isn't included when you use st.query_params to get or set a value.
たとえば、次の URL を考慮します。
https://app.snowflake.com/org/account_name/#/streamlit-apps/DB.SCHEMA.APP_NAME?streamlit-first_key=one&streamlit-second_key=two
The parameters in this URL are accessible in st.query_params as the following key-value pairs:
{
"first_key" : "one",
"second_key" : "two"
}
大量のデータの表示¶
Streamlit apps running in warehouse runtimes have a 32-MB limit on the size of messages exchanged between the backend and the
frontend. If you attempt to display more than 32 MB of data with a single Streamlit command, like st.dataframe, the following error occurs:
MessageSizeError: Data Size exceeds message limit
この制限を回避するには、Streamlitアプリを32 MB よりも小さなインクリメントでデータを取得するように設計してください。実行できるクエリのサイズや、メモリに保持できるデータの量に明示的な制限はありません。
コンテナランタイムでは、この制限はデフォルトで200MBであり、Streamlit構成オプション server.maxMessageSize を設定することで変更できます。ただし、メッセージサイズはコンテナのメモリ容量を超えることはできません。特に同時ビューアーが存在する場合は、より大きなメッセージを許可すると、コンテナのメモリ制限を超える可能性があります。
ファイルのアップロード¶
st.file_uploader および st.chat_input のデフォルトのファイルサイズ制限は200MBです。ウェアハウスのランタイムでは、これは構成できません。コンテナランタイムでは、Streamlit 構成オプション server.maxUploadSize を設定することで、この制限を変更できます。ただし、ファイルサイズはコンテナのメモリ容量を超えることはできません。特に同時ビューアーが存在する場合は、より大きなファイルを許可すると、コンテナのメモリ制限を超える可能性があります。
大きなファイルの場合は、より小さなバッチでデータを処理するか、別のアップロード方法を使用することを検討してください。
MapboxおよびCarto¶
MapboxとCartoは、 st.map または st.pydeck_chart Streamlitコマンドを使用する場合にマップタイルを提供します。
condaでパッケージを管理するウェアハウスランタイムでは、MapboxとCartoはSnowflakeの 外部製品規約 の対象となるサードパーティのアプリケーションです。
ウェアハウスランタイムでこれらのコマンドを使用するには、外部製品規約を確認する必要があります。コンテナランタイムはこの承認を必要としません。
キャッシング¶
キャッシングはウェアハウスランタイムでは部分的にサポートされ、コンテナランタイムでは完全にサポートされています。
ウェアハウスランタイムでは、キャッシュは単一セッションキャッシュに制限されています。キャッシュされた値はセッション間で共有できません。コンテナランタイムでは、キャッシュは完全にサポートされています。キャッシュされた値は、すべてのビューアーセッションで共有されます。