SnowPro Associate: Platform Question 362
Single answer● Data ExchangeA data provider wants to share a curated set of sales tables with several external companies using Snowflake Data Exchange. The provider must let consumers query the shared data without copying it, and one consumer specifically needs to enrich the shared data with its own internal tables. Which approach should the provider use to meet these requirements with the least operational overhead?
- A
Create a database role, grant it to the consumer accounts, and allow consumers to join directly to the provider's base tables in place
- B
Create a share containing the required database objects, add the share to a listing on Data Exchange, and have consumers create a read-only database from the shared data for querying and joining with their own local tables
- C
Unload the sales tables to external cloud storage and publish the bucket location through Data Exchange so each consumer can load the data into their own Snowflake account
- D
Replicate the provider database into each consumer account so consumers can query and modify the replicated objects as needed
Show answer and explanation
Correct answer: B
Explanation
The best solution is to use Snowflake secure data sharing via a share and publish it through a Data Exchange listing. This allows the provider to expose selected database objects, such as tables and secure views, to multiple external consumers without physically copying the data. Consumers then create a database from the share in their own account. That shared database is read-only, but consumers can join the shared data with their own local tables, which satisfies the enrichment requirement. This is the standard Snowflake pattern for data exchange and marketplace-style sharing. In Snowflake documentation, secure data sharing is emphasized as a zero-copy mechanism, and Data Exchange/Private Listings build on that capability to distribute data securely to approved participants. Replication and unloading are different features with different operational tradeoffs and do not best fit this scenario.
- A. Incorrect.
Incorrect. Database roles are used for privilege management within Snowflake accounts, but secure data sharing with external accounts is implemented through shares and listings, not by granting database roles directly to consumer accounts. Also, consumers do not query the provider's base tables 'in place' as if they own them; they create a read-only database from the share in their own account.
- B. Correct.
Correct. Snowflake Data Exchange uses listings backed by secure shares to distribute data to consumers without copying the underlying data. Consumers create a database from the share, and that database is read-only. They can query the shared objects and join them with tables in their own Snowflake account, which is a common secure data sharing pattern with minimal overhead for the provider.
- C. Incorrect.
Incorrect. Unloading to cloud storage introduces data movement, additional operational steps, and storage management overhead. It also does not use Snowflake's secure data sharing model, which is specifically designed to let consumers access live shared data without copying it.
- D. Incorrect.
Incorrect. Database replication is intended for account/business continuity and cross-region or cross-cloud replication scenarios, not as the primary mechanism for external data distribution through Data Exchange. Replicated databases are not the standard low-overhead method for sharing curated datasets with multiple external consumers, and replication is not used to let consumers modify provider-owned replicated objects.