After working with Snowflake for almost four years I have finally bowed down to studying for the Snowflake certification and passed my exam this morning. Before I started going through a set of practice tests, I thought the exam would be fairly easy given I have four years experience working with Snowflake. However, a little into my first online practice test, I realized the practical experience of using Snowflake, plus intuition and luck would probably only get me less than 50%. You will need to study a lot, especially for things that you don't normally use or would Google! Unfortunately Googling is not an option during the test, and therefore, this cheat sheet might come in handy if you are studying for the Snowflake Certification.
If you are fresh and planning to start your study, skimming through the Snowflake documentation is a great start. This documentation gives you a good understanding of the generic topics covered in the exam. From memory, the following headings came up in my exam this morning:
Once you have skimmed through the above documentation discussed before, I would suggest going through the practice tests as fast as you can. These practice tests are great and will help you prepare for the exam. I highly recommend starting with Udemy practice tests and taking notes as you go until you are able to get 90%+ in each. If you have additional time, go through a couple of the testprep practice runs to supplement your understanding and help cover gaps in the Udemy practice test. This should be plenty of practice to help you pass the exam.
Udemy -> https://www.udemy.com/course/snowflake-snowpro-core-certification-exam-practice-sets There was a lot of questions in the exam that was similar to Udemy practice questions.
TestPrep -> https://www.testpreptraining.com/snowflake-snowpro-core-certification TestPrep generally has very complex practice tests but I definitely saw some questions in the exam that was exactly like testprep questions
When I started going through the practice exams, I struggled with the following headings the most and took notes. I hope these notes come in handy for you too:
GET_ABSOLOUTE_PATH -> Retrieves the absolute path of a staged file using the stage name and path of the file relative to its location in the stage as inputs.
GET_STAGE_LOCATION -> Retrieves the URL for an external or internal named stage using the stage name as the input.
BUILD_SCOPED_FILE_URL -> Generates a scoped Snowflake-hosted URL to a staged file using the stage name and relative file path as inputs. A scoped URL is encoded and permits access to a specified file for a limited period of time.
GET_PRESIGNED_URL -> Generates the pre-signed URL to a staged file using the stage name and relative file path as inputs.
BUILD_STAGE_FILE_URL-> Generates a Snowflake-hosted file URL to a staged file using the stage name and relative file path as inputs. A file URL permits prolonged access to a specified file. That is, the file URL does not expire.
GET_RELATIVE_PATH -> Extracts the path of a staged file relative to its location in the stage using the stage name and absolute file path in cloud storage as inputs.
TABLE FUNCTIONS -> A table function returns a set of rows for each input row. The returned set can contain zero, one, or more rows. Each row can contain one or more columns.
SYSTEM FUNCTIONS -> Snowflake provides the following types of system functions:
WINDOW FUNCTIONS -> A window function operates on a group (“window”) of related rows. Each time a window function is called, it is passed a row (the current row in the window) and the window of rows that contain the current row. The window function returns one output row for each input row. The output depends on the individual row passed to the function and the values of the other rows in the window passed to the function.
SCALAR FUNCTIONS -> A scalar function is a function that returns one value per invocation; in most cases, you can think of this as returning one value per row. This contrasts with Aggregate Functions, which return one value per group of rows.
UDF FUNCTIONS -> With user-defined functions (UDFs), you can extend the system to perform operations that are not available through the built-in, system-defined functions provided by Snowflake.
AGGREGATE FUNCTIONS -> An aggregate function takes multiple rows (actually, zero, one, or more rows) as input and produces a single output. In contrast, scalar functions take one row as input and produce one row (one value) as output.
AUTOMATIC_CLUSTERING_HISTORY table -> Snowflake Information Schema: view the billing for Automatic Clustering
AUTOMATIC_CLUSTERING_HISTORY view -> Account Usage: view the billing for Automatic Clustering
REPLICATION_USAGE_HISTORY table -> INFORMATION_SCHEMA: The table function REPLICATION_USAGE_HISTORY in Snowflake Information Schema can be used to query the replication history for a specified database within a specified date range. The information returned by the function includes the database name, credits consumed and bytes transferred for replication.
REPLICATION_USAGE_HISTORY view -> Account Usage: can be used to query the replication history for a specified database. The returned results include the database name, credits consumed, and bytes transferred for replication. Usage data is retained for 365 days (1 year).
QUERY_HISTORY view -> Account Usage: Can be used to query Snowflake query history by various dimensions (time range, session, user, warehouse, etc.) within the last 365 days (1 year). The warehouse performance can also be evaluated by querying the Account Usage QUERY_HISTORY view.
ACCESS_HISTORY view -> Account Usage: Access History in Snowflake refers to when the user query reads column data and when the SQL statement performs a data write operation, such as INSERT, UPDATE, and DELETE, along with variations of the COPY command, from the source data object to the target data object
COPY_HISTORY view -> Account Usage: This Account Usage view can be used to query Snowflake data loading history for the last 365 days. The view displays load activity for both COPY INTO [table] statements and continuous data loading using Snowpipe. The view avoids the 10,000 row limitation of the LOAD_HISTORY View.
LOAD_HISTORY view -> INFORMATION_SCHEMA: The status of COPY INTO command can be checked from querying the INFORMATION_SCHEMA.LOAD_HISTORY view
MASKING_POLICIES view -> Account Usage: This Account Usage view provides the Column-level Security masking policies in your account. Each row in this view corresponds to a different masking policy.
TABLE_STORAGE_METRICS view -> INFORMATION_SCHEMA: This view displays table-level storage utilization information, which is used to calculate the storage billing for each table in the account, including tables that have been dropped, but are still incurring storage costs.
TABLE_STORAGE_METRICS view -> Account Usage: This view displays table-level storage utilization information, which is used to calculate the storage billing for each table in the account, including tables that have been dropped, but are still incurring storage costs.
POLICIES_REFERENCES view -> Account Usage: Returns a row for each object that has the specified policy assigned to the object or returns a row for each policy assigned to the specified object.
POLICIES_REFERENCES table -> INFORMATION_SCHEMA: Returns a row for each object that has the specified policy assigned to the object or returns a row for each policy assigned to the specified object.
AUTO_REFRESH_REGISTRATION_HISTORY -> table function: can be used to query the history of data files registered in the metadata of specified objects and the credits billed for these operations. The table function returns the billing history within a specified date range for your entire Snowflake account. This function returns billing activity within the last 14 days.
STAGE_DIRECTORY_FILE_REGISTRATION_HISTORY -> table function: can be used to query information about the metadata history for a directory table, including: - Files added or removed automatically as part of a metadata refresh. - Any errors found when refreshing the metadata.
Secure Data Sharing enables sharing selected objects in a database in your account with other Snowflake accounts. The following Snowflake database objects can be shared:
Tables External tables Secure views Secure materialized views Secure UDFs
Snowflake enables the sharing of databases through shares created by data providers and “imported” by data consumers.
Temporary tables, stages, tasks, streams, pipes, and external tables are not currently supported for replication.
Databases and Schemas can be cloned. External Table and Internal (Snowflake) stages do not get cloned.
Database and share replication are available in all editions, including the Standard edition. Replication of all other objects is only available for Business Critical Edition (or higher).
SYSTEM | BLOCK sampling is often faster than BERNOULLI | ROW sampling. Also, BERNOULLI | ROW method is good for Smaller Tables, and SYSTEM | BLOCK method is for Larger Tables.
Snowflake's unique architecture consists of three key layers: • Database Storage • Query Processing • Cloud Services
Don't be shy, get in touch with us!

Header image by Aaron Burden on Unsplash