Blog

Data Applications with the Snowflake Native App Framework

Table of Contents

The Snowflake Native App Framework revolutionizes data applications and artificial intelligence. Snowflake developed this framework, empowering users to harness Snowflake’s core functionalities effortlessly. In this article, we will explore the framework’s capabilities, benefits, and known limitations.

Capabilities of the Snowflake Native App Framework

  1. Expanding Core Snowflake Functionality: The framework empowers users to expand Snowflake’s capabilities by sharing data and related business logic with other Snowflake accounts. This integration encompasses various components, including Streamlit apps, stored procedures, and functions written using the Snowpark API, JavaScript, and SQL.
  2. Enabling Distribution and Monetization: Providers can share applications through listings, whether free or paid, and distribute and monetize them in the Snowflake Marketplace or privately with specific consumers.
  3. Integrating Rich Visualizations with Streamlit: Developers seamlessly integrate rich visualizations into their applications using the Snowflake Native App Framework, which seamlessly integrates with Streamlit. Streamlit, a Python library, simplifies web app development with minimal code.
  4. Streamlining Development Experience: The framework enhances the development experience, offering a streamlined testing environment within a single Snowflake account. Developers can efficiently manage code files and resources within source control, facilitating robust code management.
  5. Enabling Version Control and Patch Releases: Providers can release versions and patches for their applications, continuously improving application logic and delivering incremental updates to consumers.
  6. Supporting Monitoring and Troubleshooting: The Snowflake Native App Framework facilitates structured and unstructured event logging, crucial for monitoring and troubleshooting applications to ensure optimal performance.

Known Limitations in Preview

While the Snowflake Native App Framework offers numerous advantages, please be aware of its limitations during the preview release phase:

  1. Limited Platform Support: Currently, the framework does not support Snowflake accounts on Microsoft Azure and Google Cloud Platform, nor does it support Snowflake accounts in government regions.
  2. Cross-Cloud Auto-fulfillment Not Supported: Cross-Cloud Auto-fulfillment is not available for the Snowflake Native App Framework, although it is available for other AWS regions.
  3. VPS Limited to Single Organizations: Virtual Private Snowflake (VPS) is supported only within a single organization.
  4. Table Creation Restrictions: Tables created using AUTOINCREMENT are unsupported; Snowflake recommends using sequences instead. Temporary tables or stages are also not supported.
  5. Streamlit Features: Some Streamlit features may not work within the framework. Consult the documentation for a detailed list of unsupported Streamlit features and limitations.
  6. Limitations on References: References do not function in applications installed in development mode using files on a named stage. They only work in applications with versions or applications in a different account installed from a listing.

Provider and Consumer Roles

The Snowflake Native App Framework operates on the provider-consumer model, akin to other Snowflake features like Snowflake Collaboration and Secure Data Sharing:

  • Providers: Snowflake users share data content and application logic with other Snowflake users.
  • Consumers: Snowflake users seek access to the data content and application logic shared by providers.

Developing and Sharing Applications

To share data content and application logic with consumers, providers create an application package. This package includes data content, application logic, metadata, and setup scripts, essential for installation and upgrades.

  • Application Package: It encapsulates all necessary components and version/patch level information. Data content and external code files can be included in the package.
  • Manifest File: The manifest file configures the application, including the setup script’s location and version details.
  • Setup Script: The setup script contains SQL statements executed during installation or upgrades, with its location specified in the manifest file.

Publishing and Managing Applications

Providers publish applications through listings, available as Snowflake Marketplace listings or private listings.

  • Snowflake Marketplace Listing: This option markets applications across the Snowflake Data Cloud, simplifying sharing with multiple consumers.
  • Private Listing: Private listings enable providers to share applications directly with specific Snowflake accounts in any Snowflake region.

Installation and Management

Once providers publish a listing, consumers can discover and install the application as a Snowflake Native App in their account. This process involves creating required objects within the application guided by the setup script. Consumers can manage the application, enabling logging, granting privileges, and more.

In Conclusion…

The Snowflake Native App Framework signifies a significant leap in data applications and artificial intelligence. Its capabilities, including expanding core Snowflake functionality, streamlining development, and supporting rich visualizations, empower developers and data professionals. While it has certain limitations in its preview phase, it promises to pave the way for data-driven innovation in the future. Embracing this framework unlocks the full potential of Snowflake’s data capabilities for both providers and consumers.