Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
nareshr89
Helper II
Helper II

SQL QUERY TO DAX

I would need help to convert the below query to DAX

 

WITH "SQL1"
AS (
  SELECT "SQL1"."Calnu" AS "Calnu"
    ,"SQL1"."UNITID" AS "UNITID"
  FROM (
    SELECT COUNT(AL1.Calnu) AS Calnu
      ,AL3.UNITID
    FROM GOT AL1
      ,TOT AL2
      ,MOT AL3
    WHERE (
        AL2.TALL = AL1.TALL
        AND AL3.SHORT = AL2.SHORT
        AND AL3.MED = AL2.MED
        )
      AND (
        (
          AL1.STAT = 6
          AND AL1.TYPE = 0
          )
        )
    GROUP BY AL3.UNITID
    ) "SQL1"
  )
SELECT SUM("SQL1"."Calnu") AS "Calnu"
  ,"SQL1"."UNITID" AS "UNITID"
  ,CASE 
    WHEN "SQL1"."UNITID" IN (
        'AT110','AT120'
        )
      THEN 'Drop'
    WHEN "SQL1"."UNITID" IN (
        'BT110'
        ,'BT120')
      THEN 'Half'
    ELSE 'IDEA'
    END AS "Cal_type"
FROM "SQL1"

1 ACCEPTED SOLUTION
v-jianpeng-msft
Community Support
Community Support

Hi, @nareshr89 

You can type the SQL statement when connecting the SQL database in Power Bi Desktop:

vjianpengmsft_0-1708053837531.png

 

vjianpengmsft_1-1708053837535.png

 

You click on Advance Option >> SQL Statement (optional, requires database). Type your SQL statement in the input box below. Power BI will screen data based on your SQL statement and load data.

In Power Bi, DAX is used to create computing, which is different from SQL in grammar and function. The following is an example based on the SQL query you provided by you.

First of all, you need to create a calculation table or calculating column to represent the sub -query part in the SQL query, and then use this calculation table or column in another calculation column:

DAX formula:

SQL1_calculated = 
CALCULATE(
	SUMX(
FILTER(
‘GOT’,
‘GOT’[STAT] = 6 && ‘GOT’[TYPE] = 0),
COUNTROWS(
FILTER(
‘TOT’,’TOT’[TALL]=’GOT’[TALL])
)
)
	ALLEXCEPT(‘MOT’,’MOT’[UNITID])
)
SQL_Final = 
CALCULATE(
	SUM(‘SQL1_calculated’[CalculatedColumn]),
	ALLEXCEPT(‘SQL1_calculated’, ‘SQL1_calculated’[UNITID])
)& “/”&
SWITCH(
	TRUE(),
	‘SQL1_calculated’[UNITID] = “AT110” || ‘SQL1_calculated’[UNITID] = “AT120”,”Drop”,
	‘SQL1_calculated’[UNITID] = “BT110” || ‘SQL1_calculated’[UNITID] = “BT120”,”Half”,
	“IDEA”
)

This DAX expression may need to be adjusted according to your actual data model. Here I assume that GOT, TOT, MOT is a table in your model, there is a proper relationship between them. SQL1_CALCULED is an auxiliary calculation. It first calculates each UNITID. Calnu value. Then, SQL_FINAL calculates the total CALNU value of each unitid and adds a unitid -based classification.
Please note that the SWITCH function in DAX is used to replace the case statement in SQL. Thellexcept function is used to retain all other contexts other than specific dimensions. Sumx and Filter functions are used to traverse tables and screen and calculate according to conditions.

If you are not familiar with the conversion between DAX and SQL statements, you can click below links to connect to learn basic conversion.

From SQL to DAX: Filtering Data - SQLBI

 

 

 

 

How to Get Your Question Answered Quickly

If it does not help, please provide more details with your desired output and pbix file without privacy information (or some sample data) .

Best Regards

Jianpeng Li

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

1 REPLY 1
v-jianpeng-msft
Community Support
Community Support

Hi, @nareshr89 

You can type the SQL statement when connecting the SQL database in Power Bi Desktop:

vjianpengmsft_0-1708053837531.png

 

vjianpengmsft_1-1708053837535.png

 

You click on Advance Option >> SQL Statement (optional, requires database). Type your SQL statement in the input box below. Power BI will screen data based on your SQL statement and load data.

In Power Bi, DAX is used to create computing, which is different from SQL in grammar and function. The following is an example based on the SQL query you provided by you.

First of all, you need to create a calculation table or calculating column to represent the sub -query part in the SQL query, and then use this calculation table or column in another calculation column:

DAX formula:

SQL1_calculated = 
CALCULATE(
	SUMX(
FILTER(
‘GOT’,
‘GOT’[STAT] = 6 && ‘GOT’[TYPE] = 0),
COUNTROWS(
FILTER(
‘TOT’,’TOT’[TALL]=’GOT’[TALL])
)
)
	ALLEXCEPT(‘MOT’,’MOT’[UNITID])
)
SQL_Final = 
CALCULATE(
	SUM(‘SQL1_calculated’[CalculatedColumn]),
	ALLEXCEPT(‘SQL1_calculated’, ‘SQL1_calculated’[UNITID])
)& “/”&
SWITCH(
	TRUE(),
	‘SQL1_calculated’[UNITID] = “AT110” || ‘SQL1_calculated’[UNITID] = “AT120”,”Drop”,
	‘SQL1_calculated’[UNITID] = “BT110” || ‘SQL1_calculated’[UNITID] = “BT120”,”Half”,
	“IDEA”
)

This DAX expression may need to be adjusted according to your actual data model. Here I assume that GOT, TOT, MOT is a table in your model, there is a proper relationship between them. SQL1_CALCULED is an auxiliary calculation. It first calculates each UNITID. Calnu value. Then, SQL_FINAL calculates the total CALNU value of each unitid and adds a unitid -based classification.
Please note that the SWITCH function in DAX is used to replace the case statement in SQL. Thellexcept function is used to retain all other contexts other than specific dimensions. Sumx and Filter functions are used to traverse tables and screen and calculate according to conditions.

If you are not familiar with the conversion between DAX and SQL statements, you can click below links to connect to learn basic conversion.

From SQL to DAX: Filtering Data - SQLBI

 

 

 

 

How to Get Your Question Answered Quickly

If it does not help, please provide more details with your desired output and pbix file without privacy information (or some sample data) .

Best Regards

Jianpeng Li

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.