CertSafari
    Snowflake SnowPro Advanced: Data Analyst (DAA-C01)· Lessons

    Domain 1 · Lesson 3/19

    Secure Data Sharing for Enrichment: Imported Databases, Tables and Views

    Enrich data by identifying and accessing relevant data from the Snowflake Marketplace.

    12 min read
    2.43% of exam
    5 sources
    Published 5 Oct 2026
    Docs as of 4 Oct 2026

    What you will be able to do

    • Explain what Secure Data Sharing means for a consumer: no copy, read-only, compute-only cost
    • Tell apart listings, direct shares, data exchanges, clean rooms and Internal Marketplace organizational listings
    • Create a database from a share and grant IMPORTED PRIVILEGES on it
    • Create your own tables and views that join imported data to your existing data

    1.How Secure Data Sharing delivers enrichment data

    Every Marketplace listing, private listing and organizational listing is delivered through the same mechanism: Secure Data Sharing. A provider creates a share, grants it access to selected objects (databases, tables, dynamic tables, secure views, UDFs and more), and adds consumer accounts. The consumer then creates a database from that share. That database is an imported database, and its access is managed with the same role-based access control as any other object.

    No data moves between accounts. Sharing runs through Snowflake's services layer and metadata store, so imported data takes no consumer storage and access is near-instant. The only consumer cost is the virtual warehouse compute used to query it. Because the share points at the provider's live objects, new objects and updates to existing objects are immediately available to every consumer, and the provider can revoke access at any time. The trade-off is that all shared objects are read-only: you can't modify or delete them, and you can't add or change their data. Data can be offered in four ways, compared in the table below. One more account type is worth knowing: reader accounts, created by a provider for consumers who aren't Snowflake customers. A reader account can consume data only from the provider that created it, and it can't load data or run DML.

    Ways a provider can share data with you
    OptionWhat the provider offersWho receives it
    ListingA share plus additional metadata as a data productOne or more accounts (privately or on the Snowflake Marketplace)
    Direct ShareSpecific database objects (a share)Another account in the provider's region
    Data ExchangeA share offered to a group the provider sets up and managesMembers of that group of accounts
    Clean roomData, with control over which queries can be run against itCollaborating accounts

    Checkpoint 1 of 8· Match them up

    Match each sharing option to its description.

    Tap a term, then the definition that fits it.

    Checkpoint 2 of 8· Exam question

    A team got the free Marketplace listing `WEATHER_SOURCE`, and Snowflake created the shared database `WEATHER_DB` in the account. Analysts using role `BI_ANALYST` get 'Database does not exist or not authorized' when they run `SELECT * FROM WEATHER_DB.PUBLIC.DAILY_FORECAST`. Which action gives the role access?

    Sources1

    2.The Internal Marketplace and organizational listings

    Enrichment data doesn't always come from a third party. Often the most useful correlating data set belongs to another team in your company, such as a customer master owned by CRM or product data owned by supply chain. Snowflake's answer is the Internal Marketplace: a curated, secure space for sharing data inside your organization. Providers publish organizational listings to it, using Provider Studio in Snowsight or the API. Consumers can find internal data products without searching through externally shared listings on the public Marketplace. Access is controlled by account targeting and role-based access control, so only authorized users can reach the data. The goal is consistency: when teams draw on the same published data sets, there's less redundancy and fewer competing versions of the truth.

    Checkpoint 3 of 8· Check yourself

    What best distinguishes the Internal Marketplace from the Snowflake Marketplace?

    Organizational listings can also be queried directly. In government regions, for example, consumers can't search the Internal Marketplace in Snowsight. Instead they open the listing URL from the provider, or access the listing in SQL through its Uniform Listing Locator (ULL), as in the sample below. Auto-fulfillment, however, is triggered only when the listing is obtained through Snowsight, not through SQL.

    Listing available listings and querying an organizational listing by its Uniform Listing Locator (ULL)sql
    SHOW AVAILABLE LISTINGS; SELECT * FROM <ull>.<schema>.<view>

    Sources2

    3.Creating the imported database and granting access

    When you select Get on a listing, Snowsight creates the imported database for you. A share received directly can be mounted in Snowsight (Data sharing » External sharing, Shared with you tab, Ready to Get section) or in SQL. Before you mount it, DESC SHARE lists the share's objects with a <DB> prefix, which means no database has been created from the share in your account yet. The SQL form is a CREATE DATABASE with a sharing-specific clause, where provider_account is the providing account and share_name is the share.

    Consumer-side syntax for creating a database from a sharesql
    CREATE DATABASE <name> FROM SHARE <provider_account>.<share_name>

    Checkpoint 4 of 8· Fill the gap

    Which keyword completes the consumer-side syntax for mounting a share?

    CREATE DATABASE <name> FROM  ?  <provider_account>.<share_name>

    A share can be consumed only once per account, so you create a single database from each share and give other roles access to it. Users get access to a share's objects when you grant the IMPORTED PRIVILEGES privilege on the imported database to their roles, either in Snowsight (Catalog » Explorer, Privileges) or with a GRANT ... TO ROLE statement. Not every role can make that grant: it must own the imported database or hold the global MANAGE GRANTS privilege.

    Checkpoint 5 of 8· Check yourself

    Which role can grant IMPORTED PRIVILEGES on an imported database to an analyst role?

    Sources3

    4.Creating tables and views over shared data

    Imported objects are read-only, so you can't add a column to the provider's table or write your own data into it. Enrichment therefore happens in objects you create in your own database, which reference the imported one. A view is the lightest option. Its select_statement can be any valid SELECT over one or more source tables, including a join between your sales table and a shared weather table. The view always reflects the provider's latest updates, because it stores only the query. The syntax below shows the main view options. SECURE makes the view secure; by default a view is not. TEMPORARY limits the view to the session that created it. If you later want to share an enriched result onward, you can always create a new secure view before you create the outgoing share.

    CREATE OR ALTER VIEW syntax: a view is defined by a SELECT statementsql
    CREATE OR ALTER [ SECURE ] [ { [ { LOCAL | GLOBAL } ] TEMP | TEMPORARY | VOLATILE } ] [ RECURSIVE ] VIEW <name>
      [ ( <column_list> ) ]
      [ CHANGE_TRACKING =  { TRUE | FALSE } ]
      [ COMMENT = '<string_literal>' ]
      AS <select_statement>

    Checkpoint 6 of 8· Fill the gap

    Which keyword in this syntax marks the view as secure (it is off by default)?

    CREATE OR ALTER [  ?  ] [ { [ { LOCAL | GLOBAL } ] TEMP | TEMPORARY | VOLATILE } ] [ RECURSIVE ] VIEW <name>

    When you need the enriched result stored, for example as a stable snapshot or to avoid repeating an expensive join, create a table. CREATE TABLE has several variants, and the one that fits enrichment is CREATE TABLE … AS SELECT (CTAS), which creates a table already populated with the result of a query. The other variants answer different needs, as the table below shows.

    CREATE TABLE variants and what each produces
    VariantWhat it creates
    CREATE TABLE … AS SELECT (CTAS)A populated table from a query
    CREATE TABLE … LIKEAn empty copy of an existing table
    CREATE TABLE … CLONEA clone of an existing table
    CREATE TABLE … USING TEMPLATEA table with column definitions derived from staged files
    CREATE OR ALTER TABLECreates the table if missing, or alters it to match the definition

    Checkpoint 7 of 8· Check yourself

    You want a stored table holding your orders joined to a shared demographics table, built in one statement. Which CREATE TABLE variant fits?

    Checkpoint 8 of 8· Exam question

    A retailer keeps `SALES.PUBLIC.ORDERS` in its own account and has mounted a Marketplace demographics database `DEMO_DB` that the provider refreshes weekly. Dashboards must always show the enrichment from the provider's latest refresh, and the team does not want to maintain any load job. What should the analyst build?

    Sources43

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.After importing a shared table, you can add your own enrichment columns or rows to it.Why is that wrong?

      Every object shared between accounts is read-only. Enrich by creating your own views or tables that reference the imported data.

      Covered in How Secure Data Sharing delivers enrichment data

    2. 2.Each team can create its own database from the same share in one account.Why is that wrong?

      A share can be consumed only once per account. Create one imported database and grant IMPORTED PRIVILEGES on it to the roles that need it.

      Covered in Creating the imported database and granting access

    3. 3.A view is secure by default, so it can be shared onward safely without the SECURE keyword.Why is that wrong?

      Views aren't secure unless you specify SECURE. The documented default is a non-secure view.

      Covered in Creating tables and views over shared data

    Practise it for real

    Find a free listing that correlates with your data, mount it, give an analyst role access, and expose the enriched result as a view.

    1. 1.Run SHOW AVAILABLE LISTINGS, then browse Marketplace » Snowflake Marketplace and check a candidate listing's data dictionary and Data Preview.

      Why: You confirm that the listing has a column you can join on before you install it.

      You should see: A free listing with a table that shares a key (such as a date or region) with one of your tables.

    2. 2.Using ACCOUNTADMIN or a role with CREATE DATABASE and IMPORT SHARE, select Get, set a database name and select Get again.

      Why: Getting the listing creates the read-only imported database from the provider's share.

      You should see: A new database in your account, plus an option to open a worksheet with an example query.

    3. 3.As the database owner, grant IMPORTED PRIVILEGES on the imported database to your analyst role (Catalog » Explorer, or a GRANT ... TO ROLE statement).

      Why: Access to a share's objects is granted through IMPORTED PRIVILEGES, not through grants on individual objects.

      You should see: The analyst role can query the imported tables.

    4. 4.In a database you own, run CREATE VIEW with an AS <select_statement> that joins your table to the imported table.

      Why: Imported objects are read-only, so the enrichment has to live in an object you create.

      You should see: A view that returns your rows plus the provider's columns and reflects the provider's updates.

    Stuck? Get a nudge

    If Get is replaced by Request, the listing isn't available in your region yet. Pick another listing, or request replication and wait.

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “The only charges to consumers are for the compute resources (i.e. virtual warehouses) used to query the imported data.”
      ↩︎ How Secure Data Sharing delivers enrichment data
      “Updates to existing objects in a share become immediately available to all consumers.”
      ↩︎ How Secure Data Sharing delivers enrichment data
      “All database objects shared between accounts are read-only (i.e. the objects cannot be modified or deleted, including adding or modifying table data).”
      ↩︎ Exam trap 1
      “Shared data does not take up any storage in a consumer account”
      ↩︎ Prediction
      “a Direct Share, in which you directly share specific database objects (a share) to another account in your region”
      ↩︎ Checkpoint
    2. 2.
      “The Internal Marketplace lets users locate data products without having to browse through externally-shared listings in Snowflake Marketplace.”
      ↩︎ The Internal Marketplace and organizational listings
      “The Internal Marketplace is similar to the public Snowflake Marketplace, but it is exclusively for your organization.”
      ↩︎ Checkpoint
    3. 3.
      “by granting the IMPORTED PRIVILEGES privilege on an imported database to one or more roles in your account”
      ↩︎ Creating the imported database and granting access
      “you can always create a new secure view before you create another outgoing share.”
      ↩︎ Creating tables and views over shared data
      “A share can only be consumed once per account.”
      ↩︎ Exam trap 2
      “Owns the imported database (that is, has the OWNERSHIP privilege on the database).”
      ↩︎ Checkpoint
    4. 4.
      “Specifies the query used to create the view. Can be on one or more source tables or any other valid SELECT statement.”
      ↩︎ Creating tables and views over shared data
      “Default: No value (view is not secure)”
      ↩︎ Exam trap 3

    Also cited

    Spotted a mistake, or was something unclear? Tell us.