Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Summary
Imposes conditions on the execution of a U-SQL statement which is evaluated at compile time. The U-SQL statement that follows an IF keyword and its condition is executed if the condition is satisfied: the Boolean expression returns TRUE. The optional ELSE keyword introduces another U-SQL statement that is executed when the IF condition is not satisfied: the Boolean expression returns FALSE.
The Boolean expression has to be compile-time constant foldable, such as the value passed as a parameter.
Syntax
If_Else_Statement := 'IF' Boolean_Expression 'THEN' U-SQL_Statement [ 'ELSEIF' Boolean_Expression 'THEN' U-SQL_Statement ] [ 'ELSE' Boolean_Expression 'THEN' U-SQL_Statement ] 'END'.
Remarks
Examples
- The examples can be executed in Visual Studio with the Azure Data Lake Tools plug-in.
- The scripts can be executed locally. An Azure subscription and Azure Data Lake Analytics account is not needed when executed locally.
- The examples below are based on the dataset defined below. Ensure your execution includes the rowset variable.
Dataset
@employees =
SELECT * FROM
( VALUES
(1, "Noah", 100, (int?)10000, new DateTime(2012,05,31), "cell:030-0074321,office:030-0076545"),
(2, "Sophia", 100, (int?)15000, new DateTime(2012,03,19), "cell:(5) 555-4729,office:(5) 555-3745"),
(3, "Liam", 100, (int?)30000, new DateTime(2014,09,14), "cell:(5) 555-3932"),
(4, "Amy", 100, (int?)35000, new DateTime(1999,02,27), "cell:(171) 555-7788,office:(171) 555-6750, home:(425) 555-6238"),
(5, "Justin", 100, (int?)15000, new DateTime(2015,01,12), "cell:0921-12 34 65,office:0921-12 34 67"),
(6, "Emma", 200, (int?)8000, new DateTime(2014,03,08), (string)null),
(7, "Jacob", 200, (int?)8000, new DateTime(2014,09,02), ""),
(8, "Olivia", 200, (int?)8000, new DateTime(2013,12,11), "cell:88.60.15.31,office:88.60.15.32"),
(9, "Mason", 300, (int?)50000, new DateTime(2016,01,01), "cell:(91) 555 22 82,office:(91) 555 91 99, home:(425) 555-2819"),
(10, "Ava", 400, (int?)15000, new DateTime(2014,09,14), "cell:91.24.45.40,office:91.24.45.41"),
(11, "Ethan", 400, (int?)9000, new DateTime(2015,08,22), "cell:(604) 555-4729,office:(604) 555-3745"),
(12, "David", 800, (int?)100, new DateTime(2016,11,01), "cell:(171) 555-1212"),
(13, "Andrew", 100, (int?)null, new DateTime(1995,07,16), "cell:(1) 135-5555,office:(1) 135-4892"),
(14, "Jennie", 100, (int?)34000, new DateTime(2000,02,12), "cell:(5) 555-3392,office:(5) 555-7293")
) AS T(EmpID, EmpName, DeptID, Salary, StartDate, PhoneNumbers);
One condition
DECLARE @DeptID int = 100;
IF @DeptID == 100 THEN
@result = SELECT * FROM @employees WHERE DeptID == 100;
END;
OUTPUT @result
TO "/Output/ReferenceGuide/Concepts/ControlOfFlow/IF/ExampleA.csv"
USING Outputters.Csv();
One condition and ELSE
DECLARE @DeptID int = 100;
IF @DeptID == 200 THEN
@result = SELECT * FROM @employees WHERE DeptID = 200;
ELSE
@result = SELECT * FROM @employees WHERE DeptID == @DeptID;
END;
OUTPUT @result
TO "/Output/ReferenceGuide/Concepts/ControlOfFlow/IF/ExampleB.csv"
USING Outputters.Csv();
Two conditions and ELSE
DECLARE @DeptID int = 100;
IF @DeptID == 200 THEN
@result = SELECT * FROM @employees WHERE DeptID = 200;
ELSEIF @DeptID == 100 THEN
@result = SELECT * FROM @employees WHERE DeptID == 100;
ELSE
@result = SELECT * FROM @employees WHERE DeptID == @DeptID;
END;
OUTPUT @result
TO "/Output/ReferenceGuide/Concepts/ControlOfFlow/IF/ExampleC.csv"
USING Outputters.Csv();
Nested conditions
DECLARE @DeptID int = 100;
DECLARE @flag bool = true;
IF @DeptID == 100
THEN
IF @flag == true
THEN
@result = SELECT * FROM @employees WHERE DeptID == 100 AND Salary >= 30000;
END;
ELSEIF @DeptID == 200
THEN
@result = SELECT * FROM @employees WHERE DeptID == 200;
ELSE
@result = SELECT * FROM @employees WHERE DeptID == @DeptID;
END;
OUTPUT @result
TO "/Output/ReferenceGuide/Concepts/ControlOfFlow/IF/ExampleD.csv"
USING Outputters.Csv();