diff --git a/_features/BimlFAQ.md b/_features/BimlFAQ.md deleted file mode 100644 index e2be0ad..0000000 --- a/_features/BimlFAQ.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "BIML: FAQ" -component: ssis ---- - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - - -**Q: Why would I want to use Biml?** - -**A:** Creating many similar Integration Services packages is a common task in ETL. Manually creating SSIS packages can consume a significant amount of time. And after you are done, if you decided you need to tweak your "template" to add in a new logging step or correct a bug, you will have to manually edit all the SSIS packages to manually add that change. A simple Biml script, on the other hand, can generate your SSIS packages for you and allow you to regenerate all your SSIS packages if you need to make a small change at a later date. For example, see [this example](Copy Data Dynamically with BimlScript) as an example of how a simple SQL metadata query and a loop can generate many SSIS packages dynamically. - -**Q: How can I learn Biml?** - -**A:** The [Samples and Tutorials](/features/SamplesandTutorials) page has many basic Biml examples to get you started. Additionally, the [BimlScript.com](http://BimlScript.com) website is another great resource. The support section of the [Varigence](http://varigence.com) site also has a User Guide, API & Language references and samples. - -**Q: Is Biml inside *{{site.title}}* free?** - -**A:** Yes, the version Biml inside *{{site.title}}* has been provided free of charge for *{{site.title}}* users. Any sources and destinations that come with the SSIS install itself are supported for free in *{{site.title}}* Biml. Other sources and destinations like the Attunity Oracle source and destination or the PDW destination which are installed "after market" may require the paid version of [Mist](https://www.varigence.com/Mist). For example, using the convenient [SqlServerPdwDestination tag](http://bimlscript.com/Snippet/Details/1124) requires Mist (as you will get a "No translator was found for the component of type AstSqlServerPdwDestinationNode in Dataflow " error in *{{site.title}}*), however you may be able to accomplish the same thing with the [much more complex CustomComponent tag](http://bimlscript.com/Walkthrough/Details/67) using the free version of Biml in *{{site.title}}*. - -**Q: Is there a way to have Biml generate packages unattended during an automated nightly build?** - -**A:** Biml inside *{{site.title}}* requires a user to start the Biml Package Generator. To automate SSIS package generation from Biml scripts unattended, you must purchase the paid version of [Mist](https://www.varigence.com/Mist) and use a command line tool called [Hadron.exe](http://www.varigence.com/Documentation/mist/Article/Hadron+Compiler+Command+Line+Options). Note Hadron is being renamed bimlc.exe as part of Mist 4.0. - -**Q: I see some scripts on the internet mentioning Hadron but I don't see that in the Biml schema. What gives?** - -**A:** The term Hadron is being renamed to Biml in *{{site.title}}* 1.7. For example, any code which reads: - -``` xml -<#@ import namespace="Varigence.Hadron.CoreLowerer.SchemaManagement" #> -``` - -Should be changed to: - -``` xml -<#@ import namespace="Varigence.Biml.CoreLowerer.SchemaManagement" #> -``` -**Q: Can I reverse engineer a working SSIS package to see the corresponding Biml?** - -**A:** The paid version of [Mist](https://www.varigence.com/Mist) supports reverse engineering an SSIS package (.dtsx file) into a Biml script. - -**Q: My BimlScript is not behaving like I expect. How can I debug it?** - -**A:** Besides adding a code block to write to a log file, you can also add popups to your BimlScript expansion as described in this [blog post](http://www.bimlgeek.com/blog/popup-a-messagebox-within-bimlscript). - -**Q: When I copy and paste into a .biml file in Visual Studio the script doesn't work and the indenting is all wrong. How can I fix this?** - -**A:** The easiest way is to press Ctrl-V (to paste) and then Ctrl-Z (to undo indenting and formatting). This trick is further described and explained [here](http://bimlscript.com/Walkthrough/Details/45). \ No newline at end of file diff --git a/_features/BimlPackageGenerator.md b/_features/BimlPackageGenerator.md deleted file mode 100644 index bd6dd52..0000000 --- a/_features/BimlPackageGenerator.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: BIML Package Generator -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -The Biml Package Generator provides the ability to create packages from [Business Intelligence Markup Language (Biml)](http://www.varigence.com/Documentation/Language/Index). Biml is an XML-based language that allows you to describe your BI solution in a declarative fashion, similarly to using HTML to describe how a web page should appear. In addition, you can embed BimlScript (C# or VB.NET code) into Biml, in the same way that ASP.NET works with HTML. This allows for large numbers of packages to be created with a minimal amount of code. - -For examples of using Biml, please see the [samples and tutorials ](-Samples-and-Tutorials) page. - -To add a Biml file to the project, right-click on the project, or on the Data Sources, Data Source Views, or SSIS Packages folders. The context menu will have an **Add New Biml File** menu opton. This will add a Biml file to the Miscellaneous folder in the project. -![](Biml Package Generator_BimlPackageGenerator1.png) - -Opening the Biml file will launch Visual Studio's XML editor, with Intellisense for the Biml language. If Intellisense is not working, see [Manually Configuring Biml Package Generator](Manually-Configuring-Biml-Package-Generator). To learn more about the Biml language, right-click on the .biml file and choose **Learn More About Biml** from the context menu. -![](Biml Package Generator_BimlPackageGenerator2.png) - -Here's a simple example of Biml code to create a package that contains a data flow: - -```xml - - - - - - - - - - -``` - -After adding Biml code to a file, it can be checked for errors by choosing the **Check Biml for Errors** option from the context menu. - -![](Biml Package Generator_BimlPackageGenerator3.png) - -A Biml file can be expanded into one or more SSIS packages by choosing **Expand Biml File** from the menu. Expanding a file will automatically run an error check. - -![](Biml Package Generator_BimlPackageGenerator4.png) - -If the Biml file was expanded successfully, it will be added to the SSIS Packages folder in the project. - -![](Biml Package Generator_BimlPackageGenerator5.png) - -The Biml Package Generator is a plugin that leverages the Biml compiler from [Varigence](http://www.varigence.com). For more information on exactly what the free version of Biml in *{{site.title}}* supports, see the [Biml FAQ](/features/BimlFAQ/). \ No newline at end of file diff --git a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator1.png b/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator1.png deleted file mode 100644 index ff4a9b1..0000000 Binary files a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator1.png and /dev/null differ diff --git a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator2.png b/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator2.png deleted file mode 100644 index ad1c7c1..0000000 Binary files a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator2.png and /dev/null differ diff --git a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator3.png b/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator3.png deleted file mode 100644 index 771e3a3..0000000 Binary files a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator3.png and /dev/null differ diff --git a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator4.png b/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator4.png deleted file mode 100644 index 943dabc..0000000 Binary files a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator4.png and /dev/null differ diff --git a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator5.png b/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator5.png deleted file mode 100644 index 357a998..0000000 Binary files a/_features/BimlPackageGenerator/Biml Package Generator_BimlPackageGenerator5.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml.md b/_features/ControllingtheControlFlowinBiml.md deleted file mode 100644 index 7e2a804..0000000 --- a/_features/ControllingtheControlFlowinBiml.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: "BIML: Controlling the Control Flow" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - - -*This post is [part 4 of a series](http://agilebi.com/jwelch/2011/05/13/biml-functionality-in-bids-helper/) -on using [Biml](http://www.varigence.com/documentation/biml/) in -{{site.title}}. This post builds on some of the information and the sample from the previous posts.* - -So far, we’ve looked at some relatively simple packages, in terms of their flow. In this post, we’re going to look at how to handle more complex control flow in Biml. - -One feature of Biml is the ConstraintMode property that’s part of packages and containers. This property controls how precedence constraints are generated in the control flow. In the simple case, if you want all tasks to be run in sequence, you can - set the ConstraintMode to Linear. This causes the package to be produced with all tasks connected sequentially by Success precedence constraints, in the order they were specified in the Biml. So, the following Biml: - -``` xml - - - - - - - - - - - -``` - -This results in a package that looks like this: - -![](Controlling the Control Flow in Biml_image_2.png) - -This type of linear flow is great in some situations, but sometimes you need more control. In those cases, you can change the ConstraintMode to Parallel. The generated package will not have any automatically created precedence constraints, so it will look like this: - -![](Controlling the Control Flow in Biml_image_4.png) - -Once a container is in Parallel constraint mode, you can start adding explicit precedence constraints. Let’s use an example to highlight this. Imagine you have a package that needs to run three data flows. (I'm using data flows for the example because they are simple to read in Biml, and I want the focus to be on the constraints, not the tasks.) I want one data flow to execute first - this data flow will be named "Me First". If "Me First" succeeds, the data flow named - "Me Next (Success)" should execute. The third data flow, named "I'm Last (Always)" should always be executed, regardless of the success or failure of the other two tasks. So my package should look like this: - - ![](Controlling the Control Flow in Biml_image_6.png) - - -So how do we get this output from Biml? We can use the [PrecedenceConstraints](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Task.AstTaskflowPrecedenceConstraintsNode.html) collection on each task. At it's simplest, you just add an [Input](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Task.AstTaskflowInputPathNode.html) to the collection, and reference the output of the task that should execute prior to this one. In Biml, all tasks have a built-in output named Output. You can reference it using TaskName.Output ("Me First.Output" in the example below). - -This will create a regular, Success constraint between the tasks. - -
<Dataflow Name="Me Next (Success)">
-    <PrecedenceConstraints>
-        <Inputs>
-            <Input OutputPathName="Me First.Output"/>
-        </Inputs>
-    </PrecedenceConstraints>
-</Dataflow>
- -For the next set of constraints, we want to use the OR logical type, using the LogicalType property, for the constraints, since either of them should cause the third task to run. We also need to explicitly set the evaluation value on these, using the EvaluationValue property. - -
<Dataflow Name="I'm Last (Always)">
-    <PrecedenceConstraints LogicalType="Or">
-        <Inputs>
-            <Input OutputPathName="Me First.Output" EvaluationValue="Failure"/>
-            <Input OutputPathName="Me Next (Success).Output" EvaluationValue="Completion"/>
-        </Inputs>
-    </PrecedenceConstraints>
-</Dataflow>
- -You can also add expression constraints to the Inputs, to control whether tasks run based on the results on an expression. You use the EvaluationOperation and Expression properties to configure that. - -
<Package Name="Control Flow Sample 3" AutoCreateConfigurationsType="None" ConstraintMode="Parallel">
-    <Variables>
-        <Variable Name="Continue" DataType="Int32">0</Variable>
-    </Variables>
-    <Tasks>
-        <Dataflow Name="Task 1"/>
-        <Dataflow Name="Task 2">
-            <PrecedenceConstraints>
-                <Inputs>
-                    <Input OutputPathName="Task 1.Output" EvaluationOperation="Expression" Expression="@Continue==1"/>
-                </Inputs>
-            </PrecedenceConstraints>
-        </Dataflow>
-    </Tasks>
-</Package>
- -That Biml results in a package that looks like this. - - ![](Controlling the Control Flow in Biml_image_8.png) - -That's how to control the precedence constraints. I've uploaded the Biml from this post to [my SkyDrive here](http://cid-71c6f14e3c205217.office.live.com/self.aspx/Public/BimlSamples/ControlFlow.biml), so you can download and experiment with this yourself. In the next post, we’ll look at controlling the data paths in a data flow. - -\[cross-posted from [http://agilebi.com/jwelch/2011/06/13/controlling-the-control-flow-in-biml/](http://agilebi.com/jwelch/2011/06/13/controlling-the-control-flow-in-biml/)] diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_2.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_2.png deleted file mode 100644 index f920942..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_2.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_4.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_4.png deleted file mode 100644 index 16d0619..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_4.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_6.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_6.png deleted file mode 100644 index 135d173..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_6.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_8.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_8.png deleted file mode 100644 index a483a80..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_8.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb.png deleted file mode 100644 index 5b4e416..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_1.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_1.png deleted file mode 100644 index 3ea51bb..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_1.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_2.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_2.png deleted file mode 100644 index 70a03df..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_2.png and /dev/null differ diff --git a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_3.png b/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_3.png deleted file mode 100644 index b073354..0000000 Binary files a/_features/ControllingtheControlFlowinBiml/Controlling the Control Flow in Biml_image_thumb_3.png and /dev/null differ diff --git a/_features/CopyDataDynamicallywithBimlScript.md b/_features/CopyDataDynamicallywithBimlScript.md deleted file mode 100644 index 3a9a2e7..0000000 --- a/_features/CopyDataDynamicallywithBimlScript.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: "BIML: Copy Data Dynamically with BimlScript" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -*This post is [part 3 of a series](http://agilebi.com/jwelch/2011/05/13/biml-functionality-in-bids-helper/) on using -[Biml](http://www.varigence.com/documentation/biml/) in {{site.title}}. This post builds on some of the information and the sample from the previous posts.* - -BimlScript enables some interesting scenarios for generating large numbers of SSIS packages automatically. This can come in handy when you need to copy most or all of the data in one database to a different one. In this case, you could use something like the [Transfer SQL Server Objects](http://msdn.microsoft.com/en-us/library/ms142159.aspx) task, but [it has a few problems](http://blogs.msdn.com/b/mattm/archive/2007/04/18/roll-your-own-transfer-sql-server-objects-task.aspx). You can roll your own, but that might mean a fair amount of custom scripting. Or you could use the Import / Export Wizard. But in all these cases, you don’t have complete control of how the packages are produced. You could create all the packages by hand, which does give you full control, but then you are stuck doing a lot of repetitive work in SSIS. - -BimlScript provides an alternative that lets you fully control the output, while automating the rote work of producing lots of packages that use the same pattern. Let’s take a look at a sample of this, using the scenario above (copying the data from one database to another). - -
<#@ template language="C#" hostspecific="true"#>
-<#@ import namespace="System.Data" #>
-      
-<Biml xmlns="http://schemas.varigence.com/biml.xsd">
-      <Connections>
-            <OleDbConnection Name="Source" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=SSPI;"/>
-            <OleDbConnection Name="Target" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=Target;Integrated Security=SSPI;"/>
-      </Connections>
-      <Packages>
-            <# 
-                string metadataConnectionString = "Provider=SQLNCLI10;Server=.;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=SSPI;";
-                DataTable tables = ExternalDataAccess.GetDataTable(metadataConnectionString, 
-                    "SELECT '[' + s.name + '].[' + t.name + ']' FROM sys.tables t INNER JOIN sys.schemas s on t.schema_id = s.schema_id");
-                foreach (DataRow row in tables.Rows)
-                { #>
-            <Package Name="Extract <#=row[0]#>" ConstraintMode="Linear" AutoCreateConfigurationsType="None">
-                  <Tasks>
-                        <Dataflow Name="Copy Data"> 
-                              <Transformations>
-                                    <OleDbSource Name="Retrieve Data" ConnectionName="Source">
-                                          <DirectInput>SELECT * FROM <#=row[0]#></DirectInput>
-                                    </OleDbSource>
-                                    <OleDbDestination Name="Insert Data" ConnectionName="Target">
-                                          <ExternalTableOutput Table="<#=row[0]#>"/>
-                                    </OleDbDestination>
-                              </Transformations>
-                        </Dataflow>
-                  </Tasks>
-            </Package>
-                <# } #>
-      </Packages>
-</Biml>
- ->Note: When you paste this into Visual Studio, the formatting and indenting will be wrong and the code will not work. After pasting, press Ctrl-Z to undo formatting and indenting and the paste will be successful. See [this - tip](http://bimlscript.com/Walkthrough/Details/45) for more information. - -This script is set up to copy all the data in the AdventureWorksDW2008R2 database to a second database named Target (very inventive, I know). One note - the script is not creating the tables in the target database. We could actually automate that portion as well, but it's beyond the scope of this post. To ensure you are set up properly to run this script, you should create an exact structural copy of your source database under a different name. You can use the [Generate Scripts Wizard](http://msdn.microsoft.com/en-us/library/ms178078(v=SQL.105)) to do this. Just script the entire database, and then update the generated script to use a different database name (don't forget to change the USE statement to the new name). - -The script will produce a package per table, with a simple data flow that copies all the data using an OLE DB Source and OLE DB Destination. The script leverages the metadata already contained in the database, in the sys.tables view, to drive the loop that creates the packages. - -What if you don't want to select all the rows from each table? Instead, perhaps you want to specify a WHERE clause to use to filter some of the tables. To handle this, we can create a table in the target database that holds our WHERE information. - -
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
-    <Connections>
-        <OleDbConnection Name="Target" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=Target;Integrated Security=SSPI;"/>
-    </Connections>
-    <Tables>
-        <Table Name="WhereClause" ConnectionName="Target">
-            <Columns>
-                <Column Name="TableName" DataType="String" Length="255"/>
-                <Column Name="WhereSql" DataType="String" Length="4000"/>
-            </Columns>
-        </Table>
-    </Tables>
-</Biml>
- -

You can use the -steps shown in Part 2 of this series to create this table in the Target database. Once it’s been created, populate it with some data. Note that since we are using the schema-qualified name of the table, you’ll need to specify that in the table. - There’s an example of data for this table that will work with AdventureWorksDW2008R2 below. This will filter the rows down to only sales where the amount is greater than 1000.

- - - - - - - - - - - - - - - - -
TableNameSelectSql
[dbo].[FactInternetSales] -
WHERE [SalesAmount] >= 1000
-
[dbo].[FactResellerSales] -
WHERE [SalesAmount] >= 1000
-
- -Now we need to alter the script to use the new information in this table. At the beginning of the block of script after the `` element, add the following code: - -
string targetConnectionString = "Provider=SQLNCLI10;Server=.;Initial Catalog=Target;Integrated Security=SSPI;";
-DataTable whereClauses = ExternalDataAccess.GetDataTable(targetConnectionString, "SELECT TableName, WhereSql FROM WhereClause");
-
- -This retrieves the WHERE clauses from the WhereClause table, and stores them in the whereClauses variable. - -Next, replace the `` line in the OleDbSource with this: - -
<# 
-  var dataRow = whereClauses.Select(string.Format("TableName = '{0}'", row[0]));
-  string whereSql = dataRow.Length == 0 ? string.Empty : dataRow[0][1].ToString();    
-  string sql = string.Format("SELECT * FROM {0} {1}", row[0], whereSql);
-#>
-<DirectInput><#=sql#></DirectInput>
- -This code determines whether the whereClauses table has a row for the current table. If it does, it appends it to the end of the SELECT statement. The complete, final script looks like this: - -
<#@ template language="C#" hostspecific="true"#>
-<#@ import namespace="System.Data" #>
-      
-<Biml xmlns="http://schemas.varigence.com/biml.xsd">
-      <Connections>
-            <OleDbConnection Name="Source" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=SSPI;"/>
-            <OleDbConnection Name="Target" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=Target;Integrated Security=SSPI;"/>
-      </Connections>
-      <Packages>
-            <# 
-                string targetConnectionString = "Provider=SQLNCLI10;Server=.;Initial Catalog=Target;Integrated Security=SSPI;";
-                DataTable whereClauses = ExternalDataAccess.GetDataTable(targetConnectionString, "SELECT TableName, WhereSql FROM WhereClause");
-                
-                string metadataConnectionString = "Provider=SQLNCLI10;Server=.;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=SSPI;";
-                DataTable tables = ExternalDataAccess.GetDataTable(metadataConnectionString, 
-                    "SELECT '[' + s.name + '].[' + t.name + ']' FROM sys.tables t INNER JOIN sys.schemas s on t.schema_id = s.schema_id");
-                foreach (DataRow row in tables.Rows)
-                { #>
-            <Package Name="Extract <#=row[0]#>" ConstraintMode="Linear" AutoCreateConfigurationsType="None">
-                  <Tasks>
-                        <Dataflow Name="Copy Data"> 
-                              <Transformations>
-                                    <OleDbSource Name="Retrieve Data" ConnectionName="Source">
-                                        <# 
-                                            var dataRow = whereClauses.Select(string.Format("TableName = '{0}'", row[0]));
-                                            string whereSql = dataRow.Length == 0 ? string.Empty : dataRow[0][1].ToString();    
-                                            string sql = string.Format("SELECT * FROM {0} {1}", row[0], whereSql);
-                                        #>
-                                          <DirectInput><#=sql#></DirectInput>
-                                    </OleDbSource>
-                                    <OleDbDestination Name="Insert Data" ConnectionName="Target">
-                                          <ExternalTableOutput Table="<#=row[0]#>"/>
-                                    </OleDbDestination>
-                              </Transformations>
-                        </Dataflow>
-                  </Tasks>
-            </Package>
-                <# } #>
-      </Packages>
-</Biml>
- -You can see the results of this script by -right-clicking on the Biml file, and choosing Expand. It may take a minute or two to process, but when it finishes, you should see a package for each table in your source database. The data flows will copy the data from Source to Target, and any WHERE clauses - you add to the WhereClause table will be used. - -There's a lot more that could be done with this script (automating the recreation of the tables in the destination, or deleting existing data, for example), but it’s still a good example of what BimlScript can do. Instead of spending your time writing 10s or 100s of repetitive packages, automate it with BimlScript. - -

[cross-posted from -http://agilebi.com/jwelch/2011/05/31/copy-data-dynamically-with-bimlscript/]

diff --git a/_features/CreatingProjectConnectionManagersUsingBiml.md b/_features/CreatingProjectConnectionManagersUsingBiml.md deleted file mode 100644 index fee6bf4..0000000 --- a/_features/CreatingProjectConnectionManagersUsingBiml.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "BIML: Creating Project Connection Managers" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -This article is going to walk through the process of creating an SSIS 2012 package which uses a project connection manager using -Biml and the [Biml Package Generator feature](/features/BimlPackageGenerator) in *{{site.title}}*. - -This feature is available in *{{site.title}}* 1.6.3 and later and in SSIS 2012 projects in project deployment mode (not in legacy deployment mode). The code for this feature was generously created for the community by -Davide Mauri. - - -For this example, copy and paste the following Biml into the a .biml document, as seen in the other examples. - -
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
  <Connections>
    <OleDbConnection Name="OLTP" ConnectionString="Data Source=localhost;Initial Catalog=tempdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;"
     CreateInProject="false"/>
    <OleDbConnection Name="OLTP2" ConnectionString="Data Source=localhost;Initial Catalog=tempdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;"
     CreateInProject="true"/>
  </Connections>
  <Packages>
    <Package Name="Test2" ConstraintMode="Linear">
      <Connections>
        <Connection ConnectionName="OLTP2"/>
      </Connections>
      <Tasks>
        <ExecuteSQL Name="ES Test A" ConnectionName="OLTP2">
          <DirectInput>SELECT Test=1;</DirectInput>
        </ExecuteSQL>
        <ExecuteSQL Name="ES Test B" ConnectionName="OLTP">
          <DirectInput>SELECT Test=1;</DirectInput>
        </ExecuteSQL>
        <Dataflow Name="DF Test">
          <Transformations>
            <OleDbSource ConnectionName="OLTP2" Name="Source">
              <DirectInput>SELECT Test=1;</DirectInput>
            </OleDbSource>
            <OleDbDestination ConnectionName="OLTP" Name="Dest">
              <ExternalTableOutput Table="dbo.Dest"></ExternalTableOutput>
            </OleDbDestination>
          </Transformations>
        </Dataflow>
      </Tasks>
    </Package>
  </Packages>
</Biml>
- -Note the CreateInProject='true' setting in red on the connection. This signals Biml to create a project level connection manager. - diff --git a/_features/CreatingTablesusingBimlandBimlScript.md b/_features/CreatingTablesusingBimlandBimlScript.md deleted file mode 100644 index 518e63a..0000000 --- a/_features/CreatingTablesusingBimlandBimlScript.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: "BIML: Creating tables using BIML and BIMLScript" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - - -*This post is [part 2 of a series](http://agilebi.com/jwelch/2011/05/13/biml-functionality-in-bids-helper/) on using [Biml](http://www.varigence.com/Documentation/Language/Index) in *{{site.title}}*. This post builds on some of the information and the sample from the previous posts. - -When I'm creating samples for SSIS, I often find it necessary to create supporting tables to go along with the package sample. One of the things I like about [Biml](http://www.varigence.com/Documentation/Language/Index) is that you can define both your tables and packages in the language. Here's an example of defining an OrderHeader and OrderDetail table in Biml: - -``` xml - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - -
-
-
-``` - - -Tables are defined in a <[Table](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Table.AstTableNode.html)> tag. They can have columns defined, as well as keys, and even indexes (not shown in the example above). Notice that the OrderId column doesn’t have a DataType attribute. Many of the attributes in Biml have default values, and data type is one of them. If it's not specified, the column data type will default to Int32. The primary key for the table is defined with a <[PrimaryKey](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Table.AstTablePrimaryKeyNode.html)> element. - -The OrderDetail table includes a <[TableReference](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Table.AstTableColumnTableReferenceNode.html)> column. TableReference columns are a special class of columns, that define that this column should have a foreign key reference to another table. This one is referencing back to the OrderHeader table. It's not shown, but you can also use a -[MultipleColumnTableReference](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Table.AstMultipleColumnTableReferenceNode.html), if your foreign key needs to span multiple columns. - -Great - now you have your tables defined in Biml, but how do you make use of that? If only there were some way to run this against your database to create the tables... Well, fortunately, there is - by using BimlScript. BimlScript is a scripting layer that automates the production of Biml (similar in concept to the way ASP.NET produces HTML). To set this up, you need to add two Biml files to your project - one to hold the table definitions above, and one to hold the BimlScript. - -First, add a new Biml file to the SSIS project (see [Part 1](http://agilebi.com/jwelch/2011/05/13/creating-a-basic-package-using-biml/) if you need a refresher on this). Copy the Biml above to this file, and rename the file to TableDefinitions.biml. - -![](Creating Tables using Biml and BimlScript_image_2.png) - -Second, add an additional Biml file. Name this one CreateTables.biml. - -![](Creating Tables using Biml and BimlScript_image_4.png) - -Open the CreateTables.biml file, and replace the contents with the following code: - -``` xml -<#@ template language="C#" hostspecific="True" #> - - - - - <# foreach(var table in RootNode.Tables) {#> - - - <#=table.GetTableSql()#> - - - <# } #> - - - - -``` - -*Note:* When you paste this into Visual Studio, the formatting and indenting will be wrong and the code will not work. After pasting, press Ctrl-Z to undo formatting and indenting and the paste will be successful. See [this tip](http://bimlscript.com/Walkthrough/Details/45) for more information. - -This file has a header at the beginning that indicates the script will use C#. The next section defines a package named "Create Tables". The RootNode.Tables section inside the Tasks element is the interesting part. This code iterates over the tables that are part of the current model. For each table it finds, it creates an ExecuteSQL task, and embeds the SQL to create the table in the package. The code could be repeated to iterate over -[Dimensions](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Dimension.AstDimensionNode.html) and [Facts](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Fact.AstFactNode.html), which are special classes of tables. - -Notice that there are no tables defined in the BimlScript file. The BimlScript can't operate against objects defined in the same file, which is why we created the TableDefinitions.biml file separately. To produce the package, multi-select both TableDefinitions.biml, and CreateTables.biml, right-click, and choose Expand Biml File. - -![](Creating Tables using Biml and BimlScript_image_6.png) - -This will produce a new SSIS package in the project named Create Tables.dtsx. It contains two Execute SQL tasks, one for each table. - -![](Creating Tables using Biml and BimlScript_image_8.png) - -Each task includes the appropriate SQL to create the tables. As an example, here's the OrderHeader SQL from the Execute SQL task. - -``` SQL -SET ANSI_NULLS ON -SET QUOTED_IDENTIFIER ON -GO - -------------------------------------------------------------------- -IF EXISTS (SELECT * from sys.objects WHERE object_id = OBJECT_ID(N'[OrderHeader]') AND type IN (N'U')) -DROP TABLE [OrderHeader] -GO - -CREATE TABLE [OrderHeader] -( --- Columns Definition - [OrderId] int IDENTITY(1,1) NOT NULL -, [SalesDate] datetime NOT NULL -, [CustomerName] nvarchar(50) NOT NULL - --- Constraints -,CONSTRAINT [OrderHeaderPK] PRIMARY KEY CLUSTERED -( - [OrderId] Asc) WITH(PAD_INDEX = OFF,IGNORE_DUP_KEY = OFF) ON [PRIMARY] - -) -ON [PRIMARY] -WITH (DATA_COMPRESSION = NONE) -GO - -------------------------------------------------------------------- -``` -Note that the tables are ordered in the package in the same order they are defined in the Biml file. If you have tables with dependencies, make sure to order them correctly. - -In the next post, we'll look at some ways to copy data dynamically using BimlScript. - -\[cross-posted with updates from [http://agilebi.com/jwelch/2011/05/26/creating-tables-using-biml-and-bimlscript/](http://agilebi.com/jwelch/2011/05/26/creating-tables-using-biml-and-bimlscript/)] \ No newline at end of file diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_2.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_2.png deleted file mode 100644 index 8673a9a..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_2.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_4.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_4.png deleted file mode 100644 index bdd90ab..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_4.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_6.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_6.png deleted file mode 100644 index e301dae..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_6.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_8.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_8.png deleted file mode 100644 index 285b4ab..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_8.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb.png deleted file mode 100644 index d6fec61..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_1.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_1.png deleted file mode 100644 index 573b05a..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_1.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_2.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_2.png deleted file mode 100644 index 4423fd7..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_2.png and /dev/null differ diff --git a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_3.png b/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_3.png deleted file mode 100644 index e62a78b..0000000 Binary files a/_features/CreatingTablesusingBimlandBimlScript/Creating Tables using Biml and BimlScript_image_thumb_3.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml.md b/_features/CreatingaBasicPackageUsingBiml.md deleted file mode 100644 index 1e93643..0000000 --- a/_features/CreatingaBasicPackageUsingBiml.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: "BIML: Creating a basic package" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -This article is going to walk through the process of creating a simple package using -[Biml](http://www.varigence.com/Documentation/Language/Index) and the [Biml Package Generator feature](/features/BimlPackageGenerator) in *{{site.title}}*. To start out, you need to install the [latest version](/downloads) of *{{site.title}}*. Once that is set up, you should create a new Integration Services project in BIDS. In the project, right-click on the Project in the Solution Explorer. There's a new item in this menu - Add New Biml File. - -![](Creating a Basic Package Using Biml_image_2.png) - -Clicking Add New Biml File will add a new file to the Miscellaneous folder in the solution named BimlScript.biml. (The name is automatically generated, so it may be BimlScript1.biml, etc). You can right-click on the file and choose rename to give the file a more specific name. For this example, rename the file "BasicPackage.biml". - -Double-clicking on the file will open the XML editor inside of BIDS. The editor supports Intellisense for Biml, so typing an opening tag (“<”) will give you a list of valid options for tags you can use. (If you aren't seeing the Intellisense, please [check this link for troubleshooting steps](/features/ManuallyConfiguringBimlPackageGenerator).) - -![](Creating a Basic Package Using Biml_image_4.png) - -For this example, copy and paste the following Biml into the document. Since the code below includes the document root tags (``), you'll want to make sure you replace the entire contents of the Biml file. - -
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
-    <Connections>
-        <Connection Name="AdventureWorks" ConnectionString="Server=.;Initial Catalog=AdventureWorks;Integrated Security=SSPI;Provider=SQLNCLI10"/>
-    </Connections>
-    <Packages>
-        <Package Name="Biml Sample" AutoCreateConfigurationsType="None" ConstraintMode="Linear">
-            <Tasks>
-                <Dataflow Name="Extract Table List">
-                    <Transformations>
-                        <OleDbSource Name="Get Table List" ConnectionName="AdventureWorks">
-                            <DirectInput>SELECT * FROM sys.tables</DirectInput>
-                        </OleDbSource>
-                        <Multicast Name="Multicast"/>
-                    </Transformations>
-                </Dataflow>
-            </Tasks>
-        </Package>
-    </Packages>
-</Biml>
- -The first section (``) of this Biml defines an OleDbConnection that points to the AdventureWorks database. The next section (inside the `` tag) defines a single package that contains a Dataflow task (the `` tag). - -The Dataflow task contains two components, an OleDb Source and an Union All transformation. - -The next step is to take this definition of a package, and actually generate the package from it. To do this, right-click on the Biml file, and choose Expand Biml File from the context menu. - -![](Creating a Basic Package Using Biml_image_6.png) - - -(In later versions of *{{site.title}}*, the option is called "Generate SSIS Packages".) - -A new package will be added to the SSIS Packages folder, named Biml Sample.dtsx. If you review the generated package, you'll see that it matches up to what was defined in the Biml code. - -![](Creating a Basic Package Using Biml_image_12.png)![](Creating a Basic Package Using Biml_image_14.png) - -That's a quick introduction to the Biml functionality in *{{site.title}}*. In the next article, we'll set the stage for some more advanced (read: more interesting) uses of Biml, including some scripting. - -\[cross posted from [http://agilebi.com/jwelch/2011/05/13/creating-a-basic-package-using-biml/](http://agilebi.com/jwelch/2011/05/13/creating-a-basic-package-using-biml)] \ No newline at end of file diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_12.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_12.png deleted file mode 100644 index 02be19c..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_12.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_14.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_14.png deleted file mode 100644 index 4b1f2eb..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_14.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_2.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_2.png deleted file mode 100644 index 235c53c..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_2.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_4.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_4.png deleted file mode 100644 index 0472268..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_4.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_6.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_6.png deleted file mode 100644 index 76a832d..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_6.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb.png deleted file mode 100644 index 69eef56..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_1.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_1.png deleted file mode 100644 index a25114d..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_1.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_2.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_2.png deleted file mode 100644 index 86b01bd..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_2.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_5.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_5.png deleted file mode 100644 index 10b6910..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_5.png and /dev/null differ diff --git a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_6.png b/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_6.png deleted file mode 100644 index f19e89f..0000000 Binary files a/_features/CreatingaBasicPackageUsingBiml/Creating a Basic Package Using Biml_image_thumb_6.png and /dev/null differ diff --git a/_features/DefiningtheDataFlowinBiml.md b/_features/DefiningtheDataFlowinBiml.md deleted file mode 100644 index 89845de..0000000 --- a/_features/DefiningtheDataFlowinBiml.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: "BIML: Defining the Data Flow" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -*This post is [part 5 of a series](http://agilebi.com/jwelch/2011/05/13/biml-functionality-in-bids-helper/) on using [Biml](http://www.varigence.com/documentation/biml/) in -{{site.title}}. This post builds on some of the information and the sample from the previous posts.* - -In the previous post in the series, I talked about -controlling the order of execution in the control flow. In this post, the focus will be on the dataflow, and controlling how the data in the pipeline flows from one component to the next. This post uses a new table as the target of the data flow, so you may want to review -Part 2: Creating Tables using Biml and BimlScript to see how to create the table locally. The Biml below describes the table. You can create it in the database of your choice - I used a database named Target. - -
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
-    <Connections>
-        <OleDbConnection Name="Source" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=SSPI;"/>
-        <OleDbConnection Name="Target" ConnectionString="Provider=SQLNCLI10;Server=.;Initial Catalog=Target;Integrated Security=SSPI;"/>
-    </Connections>
-    <Tables>
-        <Table Name="DimAccount_Test" ConnectionName="Target">
-            <Columns>
-                <Column Name="AccountKey" />
-                <Column Name="ParentAccountKey" IsNullable="true" />
-                <Column Name="AccountCodeAlternateKey" IsNullable="true" />
-                <Column Name="ParentAccountCodeAlternateKey" IsNullable="true" />
-                <Column Name="AccountDescription" DataType="String" Length="50" IsNullable="true" />
-                <Column Name="AccountType" DataType="String" Length="50" IsNullable="true" />
-                <Column Name="Operator" DataType="String" Length="50" IsNullable="true" />
-                <Column Name="CustomMembers" DataType="String" Length="300" IsNullable="true" />
-                <Column Name="ValueType" DataType="String" Length="50" IsNullable="true" />
-                <Column Name="CustomMemberOptions" DataType="String" Length="200" IsNullable="true" />
-            </Columns>
-        </Table>
-    </Tables>
-</Biml>
- -With the table created, we can move on to the interesting part – transforming the data. In a simple, straightforward data flow, the Biml compiler will do most of the work for you. Take this data flow as an example: - -
<Dataflow Name="Dataflow 1">
-    <Transformations>
-        <OleDbSource Name="Source" ConnectionName="Source">
-            <DirectInput>SELECT * FROM dbo.DimAccount</DirectInput>
-        </OleDbSource>
-        <OleDbDestination Name="Target" ConnectionName="Target">
-            <ExternalTableOutput Table="dbo.DimAccount_Test"/>
-        </OleDbDestination>
-    </Transformations>
-</Dataflow>
- -In this case, you don’t have to specify any data paths. The Biml compiler will infer that the OleDbSource's output should be connected to the input of the OleDbDestination. - -![](Defining the Data Flow in Biml_image_2.png) - -The compiler is able to do this by using default outputs. In Biml, most components have a default output defined. In the absence of other information, the compiler will automatically connect the default output of a transformation to the input of the next component defined in the Biml. So, if we use a slightly more complex data flow, like this: - -
<Dataflow Name="Dataflow 2">
-    <Transformations>
-        <OleDbSource Name="Source" ConnectionName="Source">
-            <DirectInput>SELECT * FROM dbo.DimAccount</DirectInput>
-        </OleDbSource>
-        <Lookup Name="Check For Existing" OleDbConnectionName="Target" NoMatchBehavior="RedirectRowsToNoMatchOutput">
-            <DirectInput>SELECT AccountKey FROM dbo.DimAccount</DirectInput>
-            <Inputs>
-                <Column SourceColumn="AccountKey" TargetColumn="AccountKey"/>
-            </Inputs>
-        </Lookup>
-        <ConditionalSplit Name="Test ID Range">
-            <OutputPaths>
-                <OutputPath Name="High ID">
-                    <Expression>AccountKey >= 100</Expression>
-                </OutputPath>
-            </OutputPaths>
-        </ConditionalSplit>
-        <OleDbDestination Name="Target" ConnectionName="Target">
-            <ExternalTableOutput Table="dbo.DimAccount_Test"/>
-        </OleDbDestination>
-    </Transformations>
-</Dataflow>
- -We end up with a data flow that still automatically connects data paths between components. In this case, though, it’s probably not doing exactly what we want, since it’s just connecting the default outputs. The Conditional Split ("Test ID Range") in this example is connected by the default output, but we want to use the "High ID" output to filter out IDs less than 100. In the case of the Lookup ("Check For Existing"), the default output being used is the "Match" output, but we only want the non-matched records, so that only new rows are inserted. - -![](Defining the Data Flow in Biml_image_6.png) - - *I explicitly choose the option BIDS to display the path Source Names for this screenshot – by default, they aren't displayed in the generated package. You can change the setting in BIDS by selecting the path, opening the Properties tool window, and changing the PathAnnotation property to SourceName.* - -So how would we change the Biml to get the desired results? If we add an [InputPath](http://www.varigence.com/documentation/biml/biml_Varigence.Languages.Biml.Transformation.AstDataflowInputPathNode.html) element to the appropriate components, we can control which output is tied to the component's input. In this case, we need to add explicit InputPath instructions to the Conditional Split (that will reference the Lookup's NoMatch output) and to the OleDbDestination (which will reference the ConditionalSplit's High ID output). - -
<Dataflow Name="Dataflow 3">
-    <Transformations>
-        <OleDbSource Name="Source" ConnectionName="Source">
-            <DirectInput>SELECT * FROM dbo.DimAccount</DirectInput>
-        </OleDbSource>
-        <Lookup Name="Check For Existing" OleDbConnectionName="Target" NoMatchBehavior="RedirectRowsToNoMatchOutput">
-            <DirectInput>SELECT AccountKey FROM dbo.DimAccount</DirectInput>
-            <Inputs>
-                <Column SourceColumn="AccountKey" TargetColumn="AccountKey"/>
-            </Inputs>
-        </Lookup>
-        <ConditionalSplit Name="Test ID Range">
-            <InputPath OutputPathName="Check For Existing.NoMatch"/>
-            <OutputPaths>
-                <OutputPath Name="High ID">
-                    <Expression>AccountKey >= 100</Expression>
-                </OutputPath>
-            </OutputPaths>
-        </ConditionalSplit>
-        <OleDbDestination Name="Target" ConnectionName="Target">
-            <InputPath OutputPathName="Test ID Range.High ID"/>
-            <ExternalTableOutput Table="dbo.DimAccount_Test"/>
-        </OleDbDestination>
-    </Transformations>
-</Dataflow>
- -This gives you the following data flow. - -![](Defining the Data Flow in Biml_image_8.png) - -That's a few examples of controlling the data paths in a data flow. There are a few other bits of information that are important to know about data paths in the data flow. - -- Most components have a default output named "Output", and a second output named "Error" for the error output (if the component supports errors). -- The Multicast component has no default output, so you always need to explicitly define the data path mapping from it to the next component. -- The Union All, Merge, and Merge Join components need to be explicitly mapped, since they support multiple inputs. -- The Slowly Changing Dimension (SCD) transformation has multiple outputs. The "New" output is the default. There are also outputs named "Unchanged", "FixedAttribute", "ChangingAttribute", "HistoricalAttribute", and "InferredMember". -- The Percentage Sampling and Row Sampling transformations have two output named "Selected" (the default) and "Unselected". - -The -sample Biml for this post is on my SkyDrive. Please download it and try it out with the -[latest release](/downloads) of *{{site.title}}*. \ No newline at end of file diff --git a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_2.png b/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_2.png deleted file mode 100644 index d5d9492..0000000 Binary files a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_2.png and /dev/null differ diff --git a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_6.png b/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_6.png deleted file mode 100644 index dff112c..0000000 Binary files a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_6.png and /dev/null differ diff --git a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_8.png b/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_8.png deleted file mode 100644 index dfa19ed..0000000 Binary files a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_8.png and /dev/null differ diff --git a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb.png b/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb.png deleted file mode 100644 index ea91049..0000000 Binary files a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb.png and /dev/null differ diff --git a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb_2.png b/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb_2.png deleted file mode 100644 index 97df205..0000000 Binary files a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb_2.png and /dev/null differ diff --git a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb_3.png b/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb_3.png deleted file mode 100644 index 35b33b5..0000000 Binary files a/_features/DefiningtheDataFlowinBiml/Defining the Data Flow in Biml_image_thumb_3.png and /dev/null differ diff --git a/_features/IntroductiontoBimlinBIDSHelper.md b/_features/IntroductiontoBimlinBIDSHelper.md deleted file mode 100644 index cc1da8c..0000000 --- a/_features/IntroductiontoBimlinBIDSHelper.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "BIML: Introduction to BIML in BI Developer Extensions" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -A quick introduction to the new Biml functionality in *{{site.title}}*. - - \ No newline at end of file diff --git a/_features/ManuallyConfiguringBimlPackageGenerator.md b/_features/ManuallyConfiguringBimlPackageGenerator.md deleted file mode 100644 index 2d9d350..0000000 --- a/_features/ManuallyConfiguringBimlPackageGenerator.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "BIML: Manually Configuring BIML Package Generator" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -If you are doing an xcopy deployment of *{{site.title}}*, or experience any issues with the Biml Package Generator, please review the items on this page to make sure your environment is configured for the best experience. None of these are required to use the Biml Package Generator, but they make it more enjoyable. - -The simplest option is to make sure that `Biml.xsd` has been copied to the Visual Studio registered schemas folder. This will enable Intellisense when working with Biml files in {{site.ms-designer}}. The following tables shows the location of schemas folder for each version of Visual Studio. - -|Version|Folder| -|-------|------| -|2005|C:\Program Files (x86)\Microsoft Visual Studio 8\Xml\Schemas| -|2008|C:\Program Files (x86)\Microsoft Visual Studio 9.0\Xml\Schemas| -|2010|C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas| -|2012|C:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas| -|2013|C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas| - -If you are running on a 32-bit operating system, your folders will start `C:\Program Files\` instead of `C:\Program Files (x86)\`. - -Alternatively if you don't want to copy `Biml.xsd` to the schemas directory, you can manually associate it with a Biml file in the Visual Studio environment. To do this, open the Biml file in {{site.ms-designer}}, and then open the Properties window (F4 is the default shortcut). Select the Schemas property, and click the ellipsis button to browse to your location for `Biml.xsd`. If you take this approach, you will have to re-associate the .xsd each time you open a Biml file. \ No newline at end of file diff --git a/_features/ManuallyConfiguringBimlPackageGenerator/Manually Configuring Biml Package Generator_Biml.zip b/_features/ManuallyConfiguringBimlPackageGenerator/Manually Configuring Biml Package Generator_Biml.zip deleted file mode 100644 index d71f8c1..0000000 Binary files a/_features/ManuallyConfiguringBimlPackageGenerator/Manually Configuring Biml Package Generator_Biml.zip and /dev/null differ diff --git a/_features/SamplesandTutorials.md b/_features/SamplesandTutorials.md deleted file mode 100644 index f346157..0000000 --- a/_features/SamplesandTutorials.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "BIML: Samples and Tutorials" -component: ssis ---- - - -**Note: Varigence has stopped providing Biml for BI Developer Extensions so these features are deprecated. Instead install [BimlExpress](https://www.varigence.com/BimlExpress).** - --------------------- - -## Tutorials on Biml and BimlScript -* [Creating a Basic Package Using Biml](../CreatingaBasicPackageUsingBiml) -* [Creating Tables using Biml and BimlScript](../CreatingTablesusingBimlandBimlScript) -* [Copy Data Dynamically with BimlScript](../CopyDataDynamicallywithBimlScript) -* [Controlling the Control Flow in Biml](../ControllingtheControlFlowinBiml) -* [Defining the Data Flow in Biml](../DefiningtheDataFlowinBiml) -* [Creating Project Connection Managers Using Biml](../CreatingProjectConnectionManagersUsingBiml) - -## Videos -* [Introduction to Biml in *{{site.title}}*](../IntroductiontoBimlinBIDSHelper) - -## Other Resources -* More tutorials and examples are available from [bimlscript.com](http://bimlscript.com/) -* [Biml FAQ](/features/BimlFAQ) \ No newline at end of file diff --git a/_features/xcopydeploy.md b/_features/xcopydeploy.md index 829a6fa..2703f3d 100644 --- a/_features/xcopydeploy.md +++ b/_features/xcopydeploy.md @@ -22,6 +22,4 @@ For SQL Server 2012 and SQL Server 2014, you must also unblock every file in the (If you don't unblock the DLLs, you will get the error message: "The Add-in 'BIDSHelper' failed to load or caused an exception. Error number: 80131515") -After restarting Visual Studio, check Help... About Microsoft Visual Studio and make sure you see *{{site.title}}*. If you don't, you may need to go to Tools... Options... Add-in/Macro Security... then add the above path to the list, then restart Visual Studio. If you see *{{site.title}}* but it is not functioning, look at the [Tools... Options... *{{site.title}}*... Version](../Version) tab for more information about the problem. - -To fully configure the [Biml Package Generator](../Biml-Package-Generator) plugin as part of an xcopy deployment, please see [Manually Configuring Biml Package Generator](../Manually-Configuring-Biml-Package-Generator). \ No newline at end of file +After restarting Visual Studio, check Help... About Microsoft Visual Studio and make sure you see *{{site.title}}*. If you don't, you may need to go to Tools... Options... Add-in/Macro Security... then add the above path to the list, then restart Visual Studio. If you see *{{site.title}}* but it is not functioning, look at the [Tools... Options... *{{site.title}}*... Version](../Version) tab for more information about the problem. \ No newline at end of file