One of the major value propositions and design goals of U-SQL is to provide an easy to use and powerful way to extend U-SQL with custom user code. The main aspects that are enabling these goals are the C#-based U-SQL type system and U-SQL’s expression language.
U-SQL provides the ability to use .NET assemblies in U-SQL’s metadata catalog in order to encapsulate more complex expressions into user-defined functions, and to extend the processing capabilities of U-SQL with user-defined aggregators or user-defined operators (UDOs). If a .NET assembly is required during script compilation (for example because it specifies a function or type that needs to be resolved during compile time), then it needs to be registered with CREATE ASSEMBLY and the referenced with REFERENCE ASSEMBLY.
It also provides the ability to reference assemblies, both user-defined and system defined assemblies with the REFERENCE ASSEMBLY statement.
Assembly_DDL_Statement := Create_Assembly_Statement | Drop_Assembly_Statement.
Reference_Assembly_Statement := Reference_User_Assembly_Statement | Reference_System_Assembly_Statement.