A comprehensive guide to Snowflake Marketplace listings, covering three types of listings (free, paid, and personalized), monitoring usage, auto-fulfillment capabilities, and solutions to common setup errors.
Snowflake marketplace is a feature provided by Snowflake where you can discover and access third-party data and services, as well as market your own data products across the Snowflake Data Cloud.
The Snowflake Marketplace is available globally to all non-VPS Snowflake accounts hosted on Amazon Web Services, Google Cloud Platform, and Microsoft Azure, with the exception of Microsoft Azure Government.
As a consumer, you can access and research a wide variety of data available on the Snowflake Marketplace. This data can be used in machine learning, historical data research, and forecasting (such as traffic and weather reports).
As a data provider, rather than maintaining connections with each individual consumer, you can use listings on the Snowflake Marketplace to share selected data offerings with numerous consumers at once.
A listing is an enhanced method of Secure Data Sharing and uses the same provider and consumer model as in Snowflake marketplace.
Instead of establishing sharing relationships with every consumer individually, listing enables you to share your data with multiple customers at once.
The following listing's data-sharing features:
In total there are three types of listings:
Additionally, listings provide you the choice of making a listing available either publicly on the Snowflake Marketplace, privately to selected customers in the same region, or privately to selected consumers in other regions using replication.
A free listing is a type of private listing. In this listing, Consumers can instantly access a published dataset by clicking on the "Get Data" option.
Free Listing by the name itself indicates that it's a free-of-cost listing in which the consumer is not required to pay for data, while in some circumstances the supplier may request a small fee and share the data via private share.
This type of listing is mostly used for advertising data, or for providing non-customer-specific data, sample data for testing or onboarding new clients for full data.
For data sharing, free listing supports Auto-Fulfillment, which enables global access to your data without the need for regional data replication manually.
A paid listing is a type of private listing. It is similar to paid listings, however as the name indicates, the data in this listing is paid, and customers are charged for the data they access or consume and get instant access by paying price.
As a provider, you can create paid listings to charge consumers to access or use your data.
Additionally, the provider has the choice to offer a free trial alongside complete data so that customers can review the free trial data before purchasing full data.
In Paid listings, Snowflake will take care of billing and payment collecting for Paid listings and once consumers cancel their data purchase, will no longer have access to the paid listing data.
There are different pricing models in paid listing which are discussed below:
Usage-Based: In usage-based, the consumer will be charged a monthly data fee plus a per query charge but in months where usage occurs. The consumer will be charged on the month in which they have used or queried the data irrespective of the fact if they are listing data in their database or not. The per-query fee is optional.
There are many options for setting up a free trial of a paid listing, which is discussed below:
Subscription-based: In the subscription-based, Consumers are charged upfront at the start of a billing or access period.
Depending on the pricing plan, consumers might get billed once or multiple times for a specified billing period.
Note: Consumers cannot repurchase listings that bill one time.
There are two subscription-based plans available:
This type of listing is mostly used for selling full data to consumers.
For data sharing, paid listing supports Auto-Fulfillment, which enables access to your data in most of the regions without the need for regional data replication manually.
IMPORTANT: The following function must be used in the paid data secure view to prevent users who have not purchased from seeing the paid data during the free trial.
WHERE SYSTEM$IS_LISTING_PURCHASED() = TRUE
Note:
A personalized listing is quite different from the private listing we discussed earlier. As its name indicates, the data in this listing can be personalized for each user where consumers request specific or custom datasets from providers which, following an agreement, are shared with consumers via direct share.
A personalized listing can contain full data or data that is specific to each consumer.
It is just like a banner in a marketplace that informs customers about the data the supplier has to offer and can be tailored to meet their specific needs.
In personalized listing, pricing needs to be discussed directly with the provider before entering into an arrangement.
In the personalized listing, providers will have to take care of billing and payment collecting for data and also have to handle the access if consumers no longer use the data.
This type of listing is mostly used for selling customized or full data to consumers.
For data sharing, the personalized listing does not support Auto-Fulfillment, providers have to manually create new accounts and replicate data after agreeing on data in the region where the consumer resides.
Listings Data Dictionary is only supported in private (paid and free) listings. It allows providers to display the contents (table, view and functions) of a listing directly in the marketplace without requiring the customer to install it in their account.
As a consumer, you have two options for viewing a listing's contents:
Following are the steps to setup data dictionary in listings:
It assists the provider in transferring data to different areas where customers are located. Providers do not need to open an account in a new region and replicate data there for data sharing to customers since this is an automatic activity.
This can be enabled in both paid and free listings but not in personalized listings.
Auto-Fulfillment for paid listings is available in only certain region (32 regions) but for free listings it is available on all region.
Refresh settings for Auto-Fulfillment can be configured up to an 8-day interval, meaning that data will be updated or replicated to accounts created by Auto-Fulfillment every eighth day.
When you recreate a view attached to a listing, the view will break its connection to the listing and consumers won't be able to access that listing through their Snowflake account.
Solution: To fix this problem, go to the secure share associated with the listing and use the edit button to reassign the view. By doing this, the view will be reconnected to the listing, and the consumer will be able to access it from the same database they created earlier on their Snowflake account.
IMPORTANT:
Sometimes when a provider tries to enable Auto-Fulfillment in the private listing, It shows an "Auto-fulfillment has failed" error, which does not allow the provider to enable auto replication on that listing.
This error occurs because Snowflake does not allow the user to enable Auto-replication on the database that has already been manually shared or replicated to another account in a different region.
Solution: This can be solved by the following method
Sometimes when a provider tries to change the view or re-attach the recreated view to the same secure share, It shows "Failed to update Secure Share", which prevents users from editing Secure Share or adding view.
This error occurs because a secure view which is getting attached to secure share is referring to a table in another database i.e a secure view created in one database is referring to a table in another database.
Solution: The problem can be fixed by changing the secure view's reference to a different table that is present in the same database as the view.
This can be done either by creating a view in the same database as the table or by generating a copy or clone of the table in the database where the view already exists.
The Snowflake Marketplace provides a simple way to access third-party data, lowering the costs, risks, and delays associated with integration. It also makes it easier for customers and providers to transfer data internationally. Along with enabling data exchange, Marketplace gives suppliers a variety of tools for monitoring data usage and enhancing data security.
This blog contains a detailed discussion of sharing your data publicly using listings on the Snowflake Marketplace. This blog also covers a variety of problems individuals have while sharing data, along with solutions to those problems.