Home / Data Analyst practice test / Managing Data

Free · 5 questions with explanations

Managing Data: Databricks Data Analyst Associate Practice Questions

Exam-style questions on Managing Data. Pick your answer, then open the explanation to see why it's right — and why the other options are wrong.

1 Managing Data

A data governance team is tagging tables in Unity Catalog to support a new data classification initiative. A data steward needs to add a tag with key pii_category and value contact_info to the customers.profiles.email_address column of an existing Delta table. The steward has been granted APPLY TAG on the table, USE SCHEMA on customers.profiles, and USE CATALOG on customers, but is NOT the table owner. Additionally, a junior engineer asks whether they can tag multiple columns on the same table in a single SQL ALTER TABLE statement. Which of the following statements is CORRECT?

  1. AThe data steward cannot add the tag because APPLY TAG on a table grants permission to tag only the table-level object itself, not its individual columns. A separate APPLY TAG ON COLUMN privilege must be explicitly granted for each column the steward needs to tag. Furthermore, the junior engineer can tag multiple columns in a single ALTER TABLE SET TAG statement using a comma-separated column list, which is the recommended approach for bulk column tagging to minimize transaction overhead on the Unity Catalog metastore.
  2. BThe data steward has the correct privileges to add the column-level tag: APPLY TAG on the table (which covers both table-level and column-level tagging), USE SCHEMA on the parent schema, and USE CATALOG on the parent catalog — all three are the documented minimum requirements for a non-owner to apply tags. The steward would use either Catalog Explorer (navigate to the column, click the tag icon) or execute ALTER TABLE customers.profiles SET TAG ON COLUMN email_address ('pii_category' = 'contact_info'). However, the junior engineer should be aware that you CANNOT tag multiple columns in a single ALTER TABLE command — each column must be tagged in a separate statement, which differs from the COMMENT clause that can target multiple columns at once.
  3. CThe data steward does not have sufficient privileges because USE SCHEMA and USE CATALOG are purely navigation permissions that are automatically granted to all workspace users for any accessible catalog; neither contributes to the authorization check for APPLY TAG operations. The only valid authorization path for column tagging is being the table owner. Non-owners who need to tag columns must temporarily be granted table ownership, apply all required tags, and then have ownership transferred back — there is no privilege-based (non-ownership) tagging mechanism for column-level objects.
  4. DTag keys in Unity Catalog are case-insensitive and stored in lowercase by default, so pii_category and PII_CATEGORY would be treated as the same tag. Additionally, a single table can have an unlimited number of column tags in total — there is no cap on column-level tagging — and the junior engineer can apply up to 50 tags simultaneously across multiple columns using a single ALTER TABLE SET TAG statement with a WHERE clause filtering by column name pattern.
  5. EThe tag value contact_info will be automatically encrypted by Unity Catalog before storage because tag values are classified as sensitive governance metadata. Unity Catalog applies AES-256 encryption to all tag values assigned to PII-related columns, and the encrypted tag values are visible only to users with the VIEW ENCRYPTED METADATA privilege. Tag keys remain in plain text. The junior engineer's ALTER TABLE bulk column tagging approach will succeed only if the data steward pre-approves the tagging batch through a Unity Catalog tag approval workflow that is triggered automatically when 3 or more column tags are applied simultaneously.
Show answer & explanation

Correct answer: B

WHY B is correct: The Databricks documentation states that to add tags to Unity Catalog securable objects as a non-owner, you must have all three of: APPLY TAG on the object, USE SCHEMA on the parent schema, and USE CATALOG on the parent catalog. The data steward has all three — so the operation is authorized. The APPLY TAG privilege on a table covers both table-level and column-level tagging for that table. Tagging can be done via Catalog Explorer (visually, on the column detail page) or via SQL ALTER TABLE ... SET TAG ON COLUMN. Regarding bulk column tagging, the documentation explicitly states: 'You cannot assign tags to multiple columns in a single ALTER TABLE command. You must assign tags to each column separately. This differs from the COMMENT clause, which does support multiple columns in one command.' This is a documented constraint the junior engineer must be aware of. WHY NOT A: APPLY TAG on a table does cover column-level tagging for that table — there is no separate APPLY TAG ON COLUMN privilege. The claim about comma-separated bulk column tagging in a single statement is false; the documentation explicitly prohibits multi-column tagging in one ALTER TABLE command. WHY NOT C: USE SCHEMA and USE CATALOG are documented as required (not just navigational) components of the minimum privilege set for applying tags as a non-owner. They are part of the three-privilege requirement. Claiming these permissions are automatically granted to all users is also incorrect — they must be explicitly granted in Unity Catalog, which operates on a least-privilege model. WHY NOT D: Tag keys in Unity Catalog ARE case-sensitive — pii_category and PII_CATEGORY are two distinct tags. The documentation states: 'Tag keys are case sensitive.' Additionally, there IS a cap: a table can have at most 1,000 column tags in total across all its columns, and a single securable object supports at most 50 tags. There is no WHERE clause syntax in ALTER TABLE SET TAG for filtering by column name pattern. WHY NOT E: Unity Catalog does not automatically encrypt tag values, regardless of whether they are applied to PII-related columns. The documentation explicitly warns: 'Tag data is stored as plain text and may be replicated globally. Do not use tag names, values, or descriptors that could compromise the security of your resources.' There is no VIEW ENCRYPTED METADATA privilege, no AES-256 tag encryption, and no tag approval workflow for bulk tagging operations.

2 Managing Data

A data analyst at a retail company wants to confidently use only high-quality, authoritative datasets for their quarterly revenue report. Their Databricks workspace is enabled for Unity Catalog. Which combination of Unity Catalog features and behaviors BEST supports the analyst in discovering trustworthy datasets, confirming their quality status, and querying them alongside internal tables?

  1. AThe analyst should open the Delta Lake transaction log for each candidate table and manually parse the _delta_log directory to check whether a Databricks data steward has appended a custom JSON quality certificate entry. Tables whose _delta_log contains this entry are certified. Queries against certified tables must use a special CERTIFIED ONLY SQL keyword that is automatically injected by the Databricks Runtime to prevent mixing certified and uncertified data in the same SELECT statement.
  2. BThe analyst should use the Databricks workspace search bar or Catalog Explorer to browse available tables across catalogs, filter by the 'Certified' endorsement label that data stewards have applied to tables meeting organizational quality standards, read each table's description and documentation for context, and then query the selected tables using the standard three-part Unity Catalog namespace (catalog.schema.table) in the SQL Editor or a notebook — the same syntax used for any other registered table. No special query syntax is needed for certified tables; the certification label is a discoverability and trust signal, not a query restriction.
  3. CCertified datasets in Unity Catalog are exclusively stored in a dedicated system catalog named certified_data that is automatically provisioned by Databricks when a workspace is first created. To query any certified dataset, the analyst must run USE CATALOG certified_data before executing any SELECT statement; queries that reference a table in any other catalog alongside a table from certified_data in the same SQL statement will raise a cross-catalog certification violation error and must be rewritten as separate queries joined in Python.
  4. DUnity Catalog does not support data certification or quality endorsements at the table level; certification is a feature available only in Databricks Marketplace for externally published datasets. Internal workspace tables can be tagged with a user-defined tag named 'certified=true', but this tag is treated identically to any other arbitrary metadata tag and has no special discoverability behavior in Catalog Explorer, the search bar, or the Unity Catalog permissions system.
  5. EThe analyst must first request that a workspace administrator run the proprietary Databricks CLI command databricks unity-catalog certify --table catalog.schema.table --force-quality-scan against each candidate table. This command triggers a background data profiling job that scores each column on a 0–100 completeness scale, and tables scoring above 80 on all columns are automatically promoted to the system.certified schema where they become queryable. Tables that do not meet the threshold remain in their original schema but are flagged with a system-managed UNCERTIFIED comment visible only in the INFORMATION_SCHEMA.TABLE_COMMENTS view.
Show answer & explanation

Correct answer: B

WHY B is correct: Unity Catalog enables data discovery through the Catalog Explorer and the workspace search bar, where data stewards can apply 'Certified' endorsements (also called quality labels or certifications) to tables that have been validated as authoritative and high-quality. These endorsements appear as visual indicators in Catalog Explorer alongside the table's description, owner, tags, and associated documentation — helping analysts identify trustworthy datasets without opening data files or reading logs. Once a candidate table is identified, it is queried using the standard Unity Catalog three-part namespace (catalog.schema.table) in SQL, identical to the syntax for any registered table. Certification is a discoverability and governance feature, not a query restriction — certified tables are queried exactly like uncertified ones, and can be freely joined with other Unity Catalog tables in a single SQL statement. WHY NOT A: Parsing the _delta_log directory to find certification entries is not a supported or documented mechanism for identifying certified datasets. Delta transaction logs record DML/DDL operations, schema evolution, and file statistics — they have no concept of a quality certificate JSON entry. The CERTIFIED ONLY SQL keyword does not exist in Databricks SQL. WHY NOT C: There is no system-provisioned certified_data catalog in Unity Catalog — certified tables reside within their normal catalog/schema location. Certification is an endorsement applied to any registered table, regardless of which catalog it lives in. No cross-catalog certification restriction exists; Unity Catalog explicitly allows joining tables across catalogs in a single SQL query using the three-part namespace. WHY NOT D: Unity Catalog does support data quality endorsements and certification labels at the table level — this is a documented feature accessible through Catalog Explorer and the REST API. While user-defined tags can also be applied, the 'Certified' endorsement is a distinct, first-class UI feature in Databricks with dedicated discoverability treatment in search and Catalog Explorer — it is not equivalent to an arbitrary custom tag. WHY NOT E: No databricks unity-catalog certify CLI command exists. The certification/endorsement feature is managed through the Catalog Explorer UI or the REST API via the table properties endpoint — not through a CLI quality-scan pipeline. Tables are not automatically moved to a system.certified schema based on data profiling scores.

3 Managing Data

A data engineer wrote a notebook six months ago that reads from gold.finance.revenue_summary and writes to gold.reporting.quarterly_kpis. A colleague now opens the quarterly_kpis table in Catalog Explorer to trace where the data originally came from. They also want to understand whether column-level lineage is captured. Which combination of statements CORRECTLY describes Unity Catalog's lineage behavior for this scenario?

  1. AUnity Catalog lineage is captured only for tables that are explicitly registered for lineage tracking by a workspace administrator using ALTER TABLE ... ENABLE LINEAGE. Tables that were created before lineage was enabled have no retroactive lineage history. Because the notebook was written six months ago and lineage may not have been enabled at that time, the colleague should not expect to see any upstream lineage for quarterly_kpis. Column-level lineage is only available for tables stored in the Iceberg format — Delta tables support only table-level lineage.
  2. BUnity Catalog automatically captures runtime lineage for all queries run on Databricks against tables registered in the Unity Catalog metastore — no configuration is required. Lineage is captured for all languages (Python, SQL, Scala, R) using Spark DataFrame or Databricks SQL interfaces. The colleague can view the lineage graph in Catalog Explorer by navigating to quarterly_kpis, selecting the Lineage tab, and clicking 'See Lineage Graph' to see the upstream table revenue_summary. Column-level lineage is supported and can be viewed by clicking a specific column in the graph to reveal which upstream columns it was derived from. Lineage data is retained for one year, so the six-month-old notebook run should still be visible assuming it ran within the past 12 months.
  3. CUnity Catalog lineage is captured only for queries executed via the Databricks SQL Editor and AI/BI Dashboards — notebook-based queries (Python and Scala DataFrames) are excluded from lineage tracking because notebooks operate in the classic compute plane, which is architecturally isolated from the Unity Catalog lineage capture service running in the serverless compute plane. The colleague will see the quarterly_kpis table as a lineage endpoint but will not see any upstream connections from notebooks.
  4. DLineage in Unity Catalog is aggregated only within a single Databricks workspace; if the notebook that wrote to quarterly_kpis was run in a different workspace than the one the colleague is using — even if both workspaces share the same Unity Catalog metastore — the upstream lineage will not be visible to the colleague. Column-level lineage is captured but requires a data steward to manually annotate column-to-column mapping relationships through the Catalog Explorer UI before the graph is populated; it is not automatically inferred from SQL queries.
  5. EUnity Catalog retains lineage data indefinitely — there is no time-based expiration of lineage records. Once a pipeline writes to a table, the lineage link between source and target table persists permanently in the metastore until a workspace administrator explicitly runs ALTER TABLE quarterly_kpis DROP LINEAGE to purge it. Column-level lineage is captured for all transformation types including user-defined functions (UDFs), wildcard selects referencing path-based tables (select * from delta.'s3://...'), and RDD-based operations — these are all fully supported lineage scenarios.
Show answer & explanation

Correct answer: B

WHY B is correct: Unity Catalog lineage is automatic and requires no explicit opt-in or configuration — it is captured at runtime whenever queries run on Databricks against Unity Catalog-registered tables using Spark DataFrame or Databricks SQL interfaces. The documentation confirms lineage is 'supported for all languages' and captured 'down to the column level.' The colleague's workflow — navigating to the table in Catalog Explorer → Lineage tab → 'See Lineage Graph' — is the documented procedure. Column-level lineage is supported and clickable in the graph. Lineage data is retained for a rolling one-year window, so a notebook that ran six months ago would still show in the lineage graph. The link between revenue_summary and quarterly_kpis would be visible as long as the notebook ran within the past 12 months. WHY NOT A: Unity Catalog does not require explicit lineage enrollment via ALTER TABLE ... ENABLE LINEAGE. Lineage capture is automatic for all qualified workloads. Column-level lineage is supported for Delta tables — it is not restricted to Iceberg format. There is no format-based restriction on column lineage. WHY NOT C: The documentation explicitly states lineage is 'supported for all languages' and captured via 'Spark DataFrame (for example, Spark SQL functions that return a DataFrame) or Databricks SQL interfaces such as notebooks or the SQL query editor.' Notebooks using DataFrames or Spark SQL are fully supported for lineage capture — the classic vs. serverless compute distinction does not exclude notebook lineage. WHY NOT D: Unity Catalog lineage is aggregated across ALL workspaces attached to the same metastore — this is a documented key feature: 'Lineage is aggregated across all workspaces attached to a Unity Catalog metastore.' A different workspace writing to the same metastore-registered table would show in the colleague's lineage view. Column-level lineage is automatically inferred from SQL query plans — it does not require manual annotation. WHY NOT E: Lineage data is retained for one year (a rolling window), not indefinitely. The documentation states: 'Lineage data is retained for one year.' There is no ALTER TABLE ... DROP LINEAGE command. Additionally, the documentation explicitly lists limitations where column-level lineage CANNOT be captured: UDFs (which can obscure column mapping), path-based table references (e.g., select * from delta.'s3://...'), RDD-based operations, global temp views, and checkpointed datasets are all known lineage limitations.

4 Managing Data

A data analyst needs to find all tables in their organization's Databricks Unity Catalog environment that are relevant to customer purchase behavior, then query one of those tables alongside a separate internal order-fulfillment table that lives in a different catalog. The analyst's account has SELECT on the target tables and USE CATALOG and USE SCHEMA on both parent objects. Which approach CORRECTLY demonstrates Unity Catalog's discovery and cross-catalog querying capabilities?

  1. AUnity Catalog does not support cross-catalog queries in a single SQL SELECT statement. To join tables from two different catalogs, the analyst must first use CREATE TABLE AS SELECT to copy one table's data into the same catalog as the other, then run the JOIN query on the two co-located copies, and finally drop the temporary copy after the query completes. This two-catalog isolation policy is enforced at the SQL Warehouse level and cannot be bypassed by granting additional privileges.
  2. BThe analyst can use the Databricks workspace search bar to type keywords related to customer purchases (for example, 'customer orders') to return matching tables, views, and schemas across all catalogs visible to the analyst's account — including matches found in table names, column names, descriptions, comments, and tags. The analyst can then run a cross-catalog SQL query using fully qualified three-part names: SELECT c.customer_id, o.fulfillment_status FROM retail.customers.purchase_history c JOIN logistics.orders.fulfillment o ON c.order_id = o.order_id — no data copying, catalog switching, or special privileges beyond SELECT, USE SCHEMA, and USE CATALOG on each respective catalog are required.
  3. CUnity Catalog workspace search only indexes table names and schema names; it does not index column names, table comments, or user-defined tags. To find customer purchase-related tables, the analyst must run a full scan query against the INFORMATION_SCHEMA.TABLES table in every catalog individually, using a LIKE '%purchase%' filter, and then manually compile the results into a cross-catalog inventory. Cross-catalog queries require a SET SEARCH_PATH TO catalog1, catalog2 command before the JOIN query to instruct the SQL Warehouse which catalogs to make available in the current session.
  4. DThe analyst must first establish a cross-catalog connection by running CREATE CATALOG LINK retail_to_logistics BETWEEN retail AND logistics to register a bidirectional catalog federation link in Unity Catalog. Without this link, the SQL parser will reject any query that references table names from two different catalogs, returning a 'CatalogLinkNotFound' error. Once the link is created, cross-catalog queries use a special two-part prefix syntax: [retail]customers.purchase_history instead of the standard three-part name.
  5. EThe Databricks workspace search bar is exclusively for searching workspace objects such as notebooks, jobs, and dashboards. To search for Unity Catalog tables by content or business context, the analyst must install the separately licensed Databricks Data Discovery Add-on and configure it to crawl Unity Catalog metastore metadata nightly. Cross-catalog queries are supported but require both catalogs to be registered in the same Unity Catalog metastore and to use the same cloud storage region as the SQL Warehouse executing the query.
Show answer & explanation

Correct answer: B

WHY B is correct: Unity Catalog's workspace search is a first-class discovery tool that indexes table names, schema names, column names, table and column comments, and user-defined tags — enabling keyword-based discovery across all catalogs the user can access. Once a relevant table is found, Unity Catalog's core design explicitly supports cross-catalog SQL queries using the three-part namespace (catalog.schema.table). There is no USE CATALOG restriction that prevents referencing another catalog in the same SELECT — as long as the user has USE CATALOG, USE SCHEMA, and SELECT on both tables, the JOIN executes normally. This cross-catalog querying capability is fundamental to the Unity Catalog data lakehouse pattern, where domain data is organized across multiple catalogs (e.g., retail, logistics, finance) but can be analyzed together. WHY NOT A: Cross-catalog queries in a single SQL SELECT statement are fully supported by Unity Catalog. There is no SQL Warehouse-level isolation policy preventing multi-catalog JOINs. Requiring data copying between catalogs before joining would make the three-part namespace useless — it is explicitly designed to avoid that pattern. WHY NOT C: Databricks workspace search does index more than just table and schema names. Column names, descriptions, comments, and tags are also indexed and searchable. The SET SEARCH_PATH TO syntax does not exist in Databricks SQL for cross-catalog queries — the three-part fully qualified name is sufficient and no session variable configuration is required. WHY NOT D: No CREATE CATALOG LINK command exists in Databricks SQL or Unity Catalog. Cross-catalog federation (querying external databases like MySQL or PostgreSQL) uses Lakehouse Federation connections (CREATE CONNECTION), but querying two Unity Catalog Delta tables in different catalogs requires no such link — they share the same metastore and the three-part name is sufficient. WHY NOT E: The workspace search bar does include Unity Catalog data assets in its search scope — this is a core, built-in feature that does not require any add-on license. While both catalogs must belong to the same Unity Catalog metastore (which is the standard configuration within a Databricks account in a region), there is no cloud storage region co-location requirement for running cross-catalog JOIN queries on a SQL Warehouse.

5 Managing Data

A data analyst is cleaning a Unity Catalog Delta table named silver.customers.profiles. The table has a signup_date column (DATE type) that contains some NULL values, and an email column (STRING type) where some rows contain an empty string '' instead of a valid email address. The analyst wants to: (1) replace NULL signup_date values with the date '2020-01-01' in a query result (without modifying the underlying table), and (2) permanently delete all rows where email is either NULL or an empty string from the underlying table. Which SQL approach CORRECTLY accomplishes both requirements?

  1. ARequirement 1: Use REPLACE(signup_date, NULL, '2020-01-01') — the REPLACE function is the standard SQL function for substituting NULL values with a default in a SELECT query. Requirement 2: Run UPDATE silver.customers.profiles SET email = NULL WHERE email = '' — this converts the empty strings to NULLs, making both forms of missing email consistently represented as NULL. A subsequent DELETE FROM silver.customers.profiles WHERE email IS NULL then removes all rows with missing email, completing the two-step process.
  2. BRequirement 1: Use COALESCE(signup_date, DATE '2020-01-01') or equivalently NVL(signup_date, '2020-01-01') in the SELECT clause — COALESCE returns the first non-NULL argument, so it returns the actual signup_date when it is not NULL and substitutes '2020-01-01' when it is NULL, without modifying the underlying table data. Requirement 2: DELETE FROM silver.customers.profiles WHERE email IS NULL OR email = '' — this single DELETE statement permanently removes all rows where the email is either NULL or an empty string, satisfying both conditions in one operation on the Delta table.
  3. CRequirement 1: Use IFNULL(signup_date, CURRENT_DATE()) — the IFNULL function replaces NULL with today's current date; a static replacement like '2020-01-01' is not supported because DATE literals cannot be used as the second argument of IFNULL in Databricks SQL. Requirement 2: Run TRUNCATE TABLE silver.customers.profiles and then re-insert all rows from a subquery that filters out NULL and empty emails — TRUNCATE followed by re-insert is the recommended approach for selective row deletion in Delta tables because the DELETE statement is not supported for Delta tables registered in Unity Catalog.
  4. DRequirement 1: COALESCE(signup_date, '2020-01-01') works correctly only after first running ALTER TABLE silver.customers.profiles ALTER COLUMN signup_date SET DEFAULT '2020-01-01', because COALESCE in Databricks SQL respects the column DEFAULT definition and will skip its second argument if no DEFAULT is set on the column. Without setting the DEFAULT first, COALESCE returns NULL for NULL input values. Requirement 2: DELETE FROM silver.customers.profiles WHERE email IS NULL OR email = '' is correct, but the analyst must first disable Delta Lake ACID transactions on the table with ALTER TABLE silver.customers.profiles SET TBLPROPERTIES ('delta.enableAcid' = 'false') before a DELETE will be committed without errors.
  5. ERequirement 1: The only way to handle NULL signup_date values in a non-modifying SELECT query in Databricks SQL is to use a CASE expression: CASE WHEN signup_date IS NULL THEN CAST('2020-01-01' AS DATE) ELSE signup_date END. Functions like COALESCE and NVL modify the underlying column data and cannot be used in a SELECT without a preceding BEGIN TRANSACTION block to wrap the substitution in a rollback-safe context. Requirement 2: DELETE FROM silver.customers.profiles WHERE email IS NULL OR email = '' is correct.
Show answer & explanation

Correct answer: B

WHY B is correct: Both requirements are addressed with standard, accurate Databricks SQL patterns. (1) COALESCE(signup_date, DATE '2020-01-01') returns the first non-NULL value in its argument list — so if signup_date is not NULL it returns the actual date; if it is NULL it substitutes the default '2020-01-01'. COALESCE is used purely in the SELECT output and does NOT modify the underlying table data — it is a projection function. NVL is functionally equivalent and also valid in Databricks SQL. (2) DELETE FROM silver.customers.profiles WHERE email IS NULL OR email = '' is a standard Delta Lake DML statement that permanently removes all rows matching the predicate. Delta tables in Unity Catalog fully support DELETE, UPDATE, and MERGE as ACID DML operations — no special configuration is needed. WHY NOT A: REPLACE(string, search, replace) is a string function that replaces occurrences of a substring within a string — it does not operate on NULL values and is not equivalent to COALESCE. Using it on a DATE column would cause a type mismatch error. The two-step UPDATE then DELETE approach is a valid alternative for requirement 2, but it is less efficient than the single-statement DELETE with an OR condition described in option B. WHY NOT C: IFNULL(signup_date, CURRENT_DATE()) is valid Databricks SQL and replaces NULL with today's date — but the question requires replacing with the fixed date '2020-01-01', not the current date. More importantly, DATE literals absolutely CAN be used as the second argument of IFNULL and COALESCE in Databricks SQL. The claim that this is unsupported is false. TRUNCATE TABLE removes ALL rows unconditionally — it is not a selective deletion tool. Delta tables in Unity Catalog fully support the DELETE statement as a standard ACID DML operation. WHY NOT D: COALESCE does not require a column DEFAULT to be set before it works — COALESCE evaluates its arguments at runtime in the query context and is completely independent of column DEFAULT definitions. This is a fabricated constraint that does not exist. Delta Lake ACID transactions cannot be disabled with delta.enableAcid = 'false'; ACID support is a fundamental, non-optional property of Delta tables. No such table property exists. WHY NOT E: COALESCE and NVL are pure expression functions — they evaluate to a value at query runtime and do NOT modify any underlying column data. They can be freely used in SELECT clauses, WHERE clauses, and expressions without transactions. The claim that they modify underlying data is incorrect. A CASE expression achieves an equivalent result but COALESCE is the idiomatic, concise, and fully supported alternative.

Take the full Data Analyst practice test →