DP-600 Exam QuestionsBrowse all questions from this exam

DP-600 Exam - Question 7


HOTSPOT -

Case study -

This is a case study. Case studies are not timed separately. You can use as much exam time as you would like to complete each case. However, there may be additional case studies and sections on this exam. You must manage your time to ensure that you are able to complete all questions included on this exam in the time provided.

To answer the questions included in a case study, you will need to reference information that is provided in the case study. Case studies might contain exhibits and other resources that provide more information about the scenario that is described in the case study. Each question is independent of the other questions in this case study.

At the end of this case study, a review screen will appear. This screen allows you to review your answers and to make changes before you move to the next section of the exam. After you begin a new section, you cannot return to this section.

To start the case study -

To display the first question in this case study, click the Next button. Use the buttons in the left pane to explore the content of the case study before you answer the questions. Clicking these buttons displays information such as business requirements, existing environment, and problem statements. If the case study has an All Information tab, note that the information displayed is identical to the information displayed on the subsequent tabs. When you are ready to answer a question, click the Question button to return to the question.

Overview -

Litware, Inc. is a manufacturing company that has offices throughout North America. The analytics team at Litware contains data engineers, analytics engineers, data analysts, and data scientists.

Existing Environment -

Fabric Environment -

Litware has been using a Microsoft Power BI tenant for three years. Litware has NOT enabled any Fabric capacities and features.

Available Data -

Litware has data that must be analyzed as shown in the following table.

The Product data contains a single table and the following columns.

The customer satisfaction data contains the following tables:

Survey -

Question -

Response -

For each survey submitted, the following occurs:

One row is added to the Survey table.

One row is added to the Response table for each question in the survey.

The Question table contains the text of each survey question. The third question in each survey response is an overall satisfaction score. Customers can submit a survey after each purchase.

User Problems -

The analytics team has large volumes of data, some of which is semi-structured. The team wants to use Fabric to create a new data store.

Product data is often classified into three pricing groups: high, medium, and low. This logic is implemented in several databases and semantic models, but the logic does NOT always match across implementations.

Requirements -

Planned Changes -

Litware plans to enable Fabric features in the existing tenant. The analytics team will create a new data store as a proof of concept (PoC). The remaining Liware users will only get access to the Fabric features once the PoC is complete. The PoC will be completed by using a Fabric trial capacity

The following three workspaces will be created:

AnalyticsPOC: Will contain the data store, semantic models, reports pipelines, dataflow, and notebooks used to populate the data store

DataEngPOC: Will contain all the pipelines, dataflows, and notebooks used to populate OneLake

DataSciPOC: Will contain all the notebooks and reports created by the data scientists

The following will be created in the AnalyticsPOC workspace:

A data store (type to be decided)

A custom semantic model -

A default semantic model -

Interactive reports -

The data engineers will create data pipelines to load data to OneLake either hourly or daily depending on the data source. The analytics engineers will create processes to ingest, transform, and load the data to the data store in the AnalyticsPOC workspace daily. Whenever possible, the data engineers will use low-code tools for data ingestion. The choice of which data cleansing and transformation tools to use will be at the data engineers’ discretion.

All the semantic models and reports in the Analytics POC workspace will use the data store as the sole data source.

Technical Requirements -

The data store must support the following:

Read access by using T-SQL or Python

Semi-structured and unstructured data

Row-level security (RLS) for users executing T-SQL queries

Files loaded by the data engineers to OneLake will be stored in the Parquet format and will meet Delta Lake specifications.

Data will be loaded without transformation in one area of the AnalyticsPOC data store. The data will then be cleansed, merged, and transformed into a dimensional model

The data load process must ensure that the raw and cleansed data is updated completely before populating the dimensional model

The dimensional model must contain a date dimension. There is no existing data source for the date dimension. The Litware fiscal year matches the calendar year. The date dimension must always contain dates from 2010 through the end of the current year.

The product pricing group logic must be maintained by the analytics engineers in a single location. The pricing group data must be made available in the data store for T-SOL. queries and in the default semantic model. The following logic must be used:

List prices that are less than or equal to 50 are in the low pricing group.

List prices that are greater than 50 and less than or equal to 1,000 are in the medium pricing group.

List prices that are greater than 1,000 are in the high pricing group.

Security Requirements -

Only Fabric administrators and the analytics team must be able to see the Fabric items created as part of the PoC.

Litware identifies the following security requirements for the Fabric items in the AnalyticsPOC workspace:

Fabric administrators will be the workspace administrators.

The data engineers must be able to read from and write to the data store. No access must be granted to datasets or reports.

The analytics engineers must be able to read from, write to, and create schemas in the data store. They also must be able to create and share semantic models with the data analysts and view and modify all reports in the workspace.

The data scientists must be able to read from the data store, but not write to it. They will access the data by using a Spark notebook

The data analysts must have read access to only the dimensional model objects in the data store. They also must have access to create Power BI reports by using the semantic models created by the analytics engineers.

The date dimension must be available to all users of the data store.

The principle of least privilege must be followed.

Both the default and custom semantic models must include only tables or views from the dimensional model in the data store. Litware already has the following Microsoft Entra security groups:

FabricAdmins: Fabric administrators

AnalyticsTeam: All the members of the analytics team

DataAnalysts: The data analysts on the analytics team

DataScientists: The data scientists on the analytics team

DataEngineers: The data engineers on the analytics team

AnalyticsEngineers: The analytics engineers on the analytics team

Report Requirements -

The data analysts must create a customer satisfaction report that meets the following requirements:

Enables a user to select a product to filter customer survey responses to only those who have purchased that product.

Displays the average overall satisfaction score of all the surveys submitted during the last 12 months up to a selected dat.

Shows data as soon as the data is updated in the data store.

Ensures that the report and the semantic model only contain data from the current and previous year.

Ensures that the report respects any table-level security specified in the source data store.

Minimizes the execution time of report queries.

You need to resolve the issue with the pricing group classification.

How should you complete the T-SQL statement? To answer, select the appropriate options in the answer area.

NOTE: Each correct selection is worth one point.

Exam DP-600 Question 7
Show Answer
Correct Answer:
Exam DP-600 Question 7

Discussion

29 comments
Sign in to comment
SamuComqi
Feb 18, 2024

* VIEW: from an existing table. * CASE: correct syntax before the WHENs. * WHEN ListPrice BETWEEN 50 AND 1000 THEN 'medium': the other two options miss value 1000; on the other hand, the BETWEEN includes both 50 and 1000.

BennyBenz
Apr 16, 2024

I agree that 1000 must be included (in the medium), but if the BETWEEN includes 50, and low should include 50, and it states before that <= 50 is low, then 50 shouldn't be included... ?

2fe10ed
May 3, 2024

* VIEW: from an existing table. * CASE: correct syntax before the WHENs. * WHEN(ListPrice > 50 AND ListPrice < 1000 THEN 'medium': The second option will generate 2 rows for any '50' answer; the third option has the same problem plus a miss spelled ' ) ' that will end up generating a syntax error. The only answer that will not generate a cartesian product is the first one, although it will miss all the '1000' answers.

utsuha
May 25, 2024

The 3rd option is still the best--when doing a select with CASE WHEN, the logic is evaluated linearly. If the value is 50, the first case is true and the returned value is therefore "low". This can be tested with dummy data--just upload a csv file of numbers from 1 to 20 into a test warehouse and query in Fabric. select number, case when number <= 5 then 'low' when number between 5 and 10 then 'med' when number > 10 then 'high' end as test from dbo.numbers order by number asc As for the missing '(' or extra ')', I assume this is a typo.

dev2dev
May 25, 2024

wrong 3rd option. You get NULL PriceGroup when price is exactly 1000

utsuha
May 25, 2024

The 3rd option is still the best--when doing a select with CASE WHEN, the logic is evaluated linearly. If the value is 50, the first case is true and the returned value is therefore "low". This can be tested with dummy data--just upload a csv file of numbers from 1 to 20 into a test warehouse and query in Fabric. select number, case when number <= 5 then 'low' when number between 5 and 10 then 'med' when number > 10 then 'high' end as test from dbo.numbers order by number asc As for the missing '(' or extra ')', I assume this is a typo.

dev2dev
May 25, 2024

wrong 3rd option. You get NULL PriceGroup when price is exactly 1000

semauni
Oct 31, 2024

I agree with your answer, but with some nuance: - I think that you're right that it is a view, but not because it is created from an existing table. Nothing prevents you from creating a table from a table (CTAS statement). However, it should be a view because 'data should be visible as soon as the datastore is updated'. A table from a table is not automatically refreshed when its source table is updated, but a view on this source table will immediately show the new results. - I agree that in the last option, there now is no correct option since none meet the requirements and BETWEEN is the least wrong. Either a bad question or a badly remembered question :)

semauni
Oct 31, 2024

I'm however not 100% sure it shouldn't be table, because reports also need minimal query execution times. A 'SELECT *' on a table is simple, a 'SELECT *' on the view always executes the underlying query. Makes me wonder what 'as soon as the datastore' is updated mean: as soon as new data is available, or as soon as the Power BI source table has been updated?

semauni
Oct 31, 2024

I'm however not 100% sure it shouldn't be table, because reports also need minimal query execution times. A 'SELECT *' on a table is simple, a 'SELECT *' on the view always executes the underlying query. Makes me wonder what 'as soon as the datastore' is updated mean: as soon as new data is available, or as soon as the Power BI source table has been updated?

DinoD
Mar 5, 2025

VIEW: hence create view as "Then SQL", plus its being used in a report, so its not meant to a static representation of the data at a single point in time. CASE: correct syntax before the WHENs WHEN: There is no correct answer, none of the solutions either exclude 50 and always include 1000. Look at the bottom of high and it says > 1000, so what catches 51 through 1000? Garbage question

thuss
Feb 22, 2024

All options for the last one are wrong, which is irritating. Should be > 50 AND <= 1000.

Tuki93
Mar 25, 2024

The range BETWEEN 50 AND 1000 is also a valid answer. However, if the value is 50, it will be returned from the previous ‘when’ clause, ListPrice <= 50 Then 'low', before reaching the second ‘when’ clause.”

calvintcy
Jun 17, 2024

I took the test a few days ago. This question was included, but Microsoft has made a change to: WHEN(ListPrice > 50 AND ListPrice <= 1000) THEN 'medium'. Therefore, I chose this option.

pirate84
Jan 28, 2025

I took the test the last week. This question was included, with a important modification: They changes the information,¡ of the first option for "WHEN": ListPrice > 50 AND ListPrice <= 1000) THEN 'medium'. -View -Case -WHEN(ListPrice > 50 AND ListPrice <= 1000) THEN 'medium'.

David_Webb
May 19, 2024

VIEW CASE WHEN ListPrice BETWEEN 50 AND 1000 THEN 'medium' Look at the requirement: List prices that are less than or equal to 50 -> low List prices that are greater than 50 and less than or equal to 1,000 -> medium List prices that are greater than 1,000 -> high Only using option "BETWEEN 50 AND 1000" will be able to get the correct answer. If the ListPrice is 50, the case will resolve it as "low" in the first condition and return the value. Even though 50 is included in the next case "BETWEEN 50 AND 1000", it will not fall into this condition as it has already been resolved with the first condition.

hjhjh123
Sep 13, 2024

view, case - no correct answer - my guess is they miseed the = on a

theseon
Feb 9, 2024

1 and 2 correct but should 3 not be BETWEEN 51 AND 1000 since the BETWEEN command is inclusive

mtroyano
Mar 24, 2024

The statement says "List prices greater than 50 and less than or equal to 1,000 are in the middle price group." Therefore, it should not include 50 but 1,000. The correct options are VIEW, CASE, >50 and <=1,000

STH
Mar 27, 2024

The question is not about the cleanest statement but the working one ListPrice BETWEEN 50 AND 1000 is the only condition that includes 1000 and then meet the requirement ! Even if it also includes 50, this is not a problem since value 50 is catched by the first WHEN clause : wich means a simple ListPrice <= 1000 also works In fact, the best sentence would be the following : CASE WHEN ListPrice <= 50 THEN 'low' WHEN ListPrice > 1000 THEN 'high' ELSE 'medium'

282b85d
May 27, 2024

CREATE VIEW [dbo].[ProductsWithPricingGroup] AS SELECT ProductId, ProductName, ProductCategory, ListPrice, CASE WHEN ListPrice <= 50 THEN 'low' WHEN ListPrice > 50 AND ListPrice <= 1000 THEN 'medium' WHEN ListPrice > 1000 THEN 'high' END AS PricingGroup FROM dbo.Products;

Darshan6232
Jun 9, 2024

It should be 1. Table : As it should be part of Default Semantic Model. With view it's not possible to achieve this. 2. Case Statement : As we have "When" and "Then" 3. Between 51* and 1000 or it should be Listprice>50 and Listprice <=1000. Thanks!

Priyanka007
Jun 20, 2024

Within the warehouse, a user can add warehouse objects - tables or views to their default Power BI semantic model. I would go with VIEW as view Shows data as soon as the data is updated in the data store.https://learn.microsoft.com/en-us/fabric/data-warehouse/default-power-bi-semantic-model

Momoanwar
Feb 18, 2024

View Case Between

a_51
Mar 19, 2024

View - a view is reusable for consistent values CASE WHEN(ListPrice > 50 AND ListPrice < 1000) THEN ‘medium’ - the Between would include the 50 value but this would not include the 1000 so questioning if the question is correctly worded or options shown

TeeVanBee
Mar 28, 2024

It can't be between because you will get a syntax error. The first ( is missing.

rmeng
Apr 29, 2024

View Case WHEN ListPrice BETWEEN 50 AND 1000 THEN 'medium

stilferx
May 8, 2024

IMHO, VIEW -> CASE -> ... BEETWEEN ... Why BETWEEN? It is a tricky stuff. It should be between 51 & 1000. This option works well as well because the SQL engine after processing the first one, will ignore the second condition. List prices that are greater than 50 and less than or equal to 1,000 are in the medium pricing group.

omsingh
May 10, 2024

select country,first_name, age , case when age <=25 then "child" when age between 25 and 28 then "adult" when age > 28 then "old" end as ages from customers; country first_name age ages USA John 31 old USA Robert 22 child UK David 22 child UK John 25 child UAE Betty 28 adult Correct answer will be VIEW, CASE AND BETWEEN.

Nicofr
Feb 14, 2024

View => "Shows data as soon as the data is updated in the data store." CASE BETWEEN(50,1000) => the when clause for =50 is done in the first WHEN so it will never go in the second when if value is 50

Bharat
Feb 14, 2024

It has to be BETWEEN because the other two choices will miss 1000

shem576
Mar 20, 2024

between 51 and 1000 should be the one..

AnetaK
Apr 22, 2024

This is the 7th question and in all of them there were mistakes! Is there someone responsible to verify the quality?! I know it's a beta version, but still...

Plb2
Jun 2, 2024

welcome to examtopics where the community decides on what is right and wrong to enable providing this service for free

2fe10ed
May 3, 2024

* VIEW: Shows data as soon as the data is updated in the data store. * CASE: correct syntax before the WHENs. * WHEN(ListPrice > 50 AND ListPrice < 1000 THEN 'medium': The second option will generate 2 rows for any '50' answer; the third option has the same problem plus a miss spelled ' ) ' that will end up generating a syntax error. The only answer that will not generate a cartesian product is the first one, although it will miss all the '1000' answers. That's a smaller problem than a Cartesian product.

b6daab0
Jun 8, 2024

Is the solution provided the true correct answer? In many cases it's not, which is misleading. It definitely should be a view and not a table because the Product table changes and thus the pricing group being updated. Where do the solutions come from??

vahox
Jun 15, 2024

View CASE WHEN(ListPrice >= 50 AND ListPrice < 1000) then as between is inclusive of 50 it will provide incorrect result

kronoszerg
Jun 19, 2024

View To satisfy "Shows data as soon as the data is updated in the data store" You cannot use CTAS Statement as it will not update when source data is updated. Case The usual SQL Case Statement Last one is...... no correct answer Either question is wrong or answer options are wrong. BETWEEN is inclusive by the way

AhmadAllied
Jun 19, 2024

The valid answer for 3rd is first one as the 1st case is When List Price <= 50 then 'low', so the next case should not be include equal to 50 in anyway, but option 2 has List Price >= 50 which is wrong and between function will also consider = 50 values so it is also wrong.

ca_acc
Aug 13, 2024

* VIEW * CASE * WHEN ListPrice Between 50 and 1000 Then Medium: The first when is includes 50, so even though the between should be from 51 to 1000, it is (in this case) irrelevant, because in this execution order the frist WHEN wins. Therefor between should produce correct results.

Rakesh16
Nov 15, 2024

View, CASE, WHEN ListPrice BETWEEN 50 AND 100 THEN ‘medium’ is the answer

ba2bfdf
Mar 30, 2025

1. None of the option in the question satisfying the requirement. Especially for ListPrice 1000 2. Option with Between having an additional ")" which will throw syntax error. List prices that are less than or equal to 50 are in the low pricing group. List prices that are greater than 50 and less than or equal to 1,000 are in the medium pricing group. List prices that are greater than 1,000 are in the high pricing group.

Kau1977
Apr 20, 2025

As per the given syntax it should be Create View in the first option.