Business Intelligence Markup Language
Business Intelligence Markup Language (Biml) is a domain-specific XML dialect for defining business intelligence (BI) assets. Biml authored BI assets can currently be used by the BIDS Helper add-on for Microsoft SQL Server Business Intelligence Development Studio (BIDS) and the Varigence Mist (now called BimlStudio) integrated development environment; both tools translate Biml metadata into SQL Server Integration Services (SSIS) and SQL Server Analysis Services (SSAS) assets for the Microsoft SQL Server platform. However, emitters can be created to compile Biml for any desired BI platform. While Biml’s declarative design is sufficient to author  BI assets, BimlScript extends the language by enabling authors to embed C# or VB.NET code within Biml, similar to how ASP.NET includes .NET code within static HTML markup. BimlScript is used to merge changes into existing Biml assets, automatically generate Biml code, and apply changes across multiple Biml files during compilation. History. Biml. Biml is an XML dialect that specifies all aspects of a BI solution, including relational models, data transformation packages, multi-dimensional models, and tabular models. Unlike other BI solutions, Biml has a "write once, target any platform" philosophy. This enables Biml users to switch their target platform  without needing to change their code. Currently, Biml targets SQL Server versions 2005, 2008, 2008 R2, 2012 and 2014, emitting SSIS packages and SSAS cubes. Because Biml is XML, it can leverage the vast ecosystem of tools for XML based languages. This also makes it human-readable/writable, so it is easier to edit by hand than the SSIS/SSAS files it generates. In late 2009, Biml was extended with BimlScript. BimlScript allows C# or VB.NET code nuggets to be embedded directly within Biml. BimlScript's goal is to automate repetitive work in reusable scripts. Additionally, it has been used  to automate package generation and build reusable patterns for BI tasks. BimlScript is also used to take metadata from various sources (relational database structure, relational data, flat files, annotations, etc...) and automatically generate Biml code from it. Mist. Mist is an IDE for authoring Biml code and building BI assets. Mist leverages visual design capabilities and debugging features to simultaneously edit entire business intelligence models, including relational tables, SSIS packages, and cubes. Mist also incorporates modern programming IDE features, including text editors with syntax highlighting, Intelliprompt and quick-info displays, source control integration, and multi-monitor support. BIDS Helper. As  Biml’s popularity has grown, key portions of the Biml engine, including dynamic package generation, have been contributed to the BIDS Helper open source project hosted on CodePlex. BimlScript community. BimlScript.com is a community website for developing and sharing Biml solutions to BI problems, and contributing Biml content to share with others. Along with tutorials, walkthroughs, and videos, the site provides an online Biml editor. Code generation. Biml files are compiled to produce BI assets for a chosen platform. Currently, it is possible to generate assets for Microsoft’s SSIS, SSAS, and SQL Server platforms, for the 2005, 2008 (R2 ), 2012 and 2014 releases. Other platforms may be targeted in the future. Syntax. Biml has a syntax that’s common to all XML languages. Tags begin and end with < and >, respectively. Furthermore, tags can have attributes and nested elements. Biml. Declaration. Biml documents begin with a common declaration <Biml xmlns="http://schemas.varigence.com/biml.xsd"> Root types. Biml has a well-defined set of root types, indicating the various kinds of BI assets that can be created: Example. This is an example of the AdventureWorks DimCurrency table, authored in Biml: <Biml xmlns="http://schemas.varigence.com/biml.xsd"> </Biml> BimlScript. All  BimlScript tags begin and end with <# and #> delimiters, respectively. Special types of BimlScript tags use augmented versions of these delimiters, to indicate specific usages. Directives. A Biml file, with BimlScript, begins with at least one directive. Directives provide instructions to the Biml engine, regarding how to process the BimlScript and generate its Biml. Directives are single tags that begin with <#@. Each directive begins with a single term, followed by attributes that supply required values. The two most common directives are template and import. Template. This directive indicates that the file's BimlScript uses the C# programming language . <#@ template language="C#" #> Import. This directive specifies .NET namespaces that should be imported for the file. It is functionally equivalent to the C# using statement or VB.NET Imports statement. <#@ import namespace="Varigence.Languages.Biml.Connection" #> Delimiters. When authoring BimlScript, additional delimiters may be used. These delimiters match the behavior of T4 template delimiters. Example. This BimlScript example imports a database's assets via a connection, declared in a separate file, named "AdventureWorksLT". Each schema and table from the imported database is then embedded directly within the Schemas and Tables collections, respectively. <#@ template language="C#" hostspecific="True" tier="2" #> < #@ import namespace="Varigence.Languages.Biml.Connection" #> <#@ import namespace="Varigence.Hadron.Extensions" #> <#@ import namespace="Varigence.Hadron.Extensions.SchemaManagement" #> <#@ import namespace="Varigence.Hadron.CoreLowerer.SchemaManagement" #> <#+ public ImportResults Results <Biml xmlns="http://schemas.varigence.com/biml.xsd"> </Biml> This example shows how developers can use Biml and BimlScript to: