How to get input dataset from Look up transformation in ssis - ssis

i have an flat file input dataset, and i need to use look up transformation for comparing 3 columns with that of input to reference dataset used in look up transformation.
After look up operation operation is performed i need to get the input columns also along with reference dataset columns.
I googled but i coluldn't find any method to get input dataset from look up. The only solution left is Merge join. I dont want to use merge Join

The input columns are automatically added to the output pipelines of a Lookup transformation. You'll be able to reference them in subsequent transformations.

Related

SSRS - Using multiple data sources

Using 2 DataSources and 2 DataSets in SSRS I am trying to do the following...
List the tasks, with a Boolean variable = true on the project list.
Projects & Tasks are 2 separate DataSources.
Projects are made up of tasks, therefore the tasks DataSource has a Related_Project field.
I would like to show all the tasks that are associated to the projects with that variable - true.
Any help on this? Tried Lookups but to no success.
Obviously, your table is limited to use one dataset.
You can achieve your goal using the LOOKUPSET function. It works similar to LOOKUP but returns an array of ALL matches. You can then output this to a cell. Format the textbox as HTML (in the properties tab) and you can output the data with to make a list.
You won't be able to take advantage of groups, sorting and having each value in a cell. If possible, I would recommend writing a query to join your datasets so you can achieve the desired result.

How to pass Multiple Input for SSIS Script Component

I have a Custom Source DataFlow Component whose O/P will differ every time, I need to Insert those records in to a Destination table.
Problem:-
Can't Specify the Input columns at Design time for Destination Component.. as in actual for every call to the DataFlow task, The source component gonna return Different O/P Columns based on the Table Schema.
Solution Needed For:-
How to accept whatever inputs are available without any mapping in Destination DataFlow component(either by any Existing Component or by Custom Component)?
The data flow's fixed structure is there for data validation and to optimization purposes. All of it's components are going to have fixed input and output columns. I would suggest the following possibilities:
Write a data flow for every possible schema. There are probably a finite number of possibilities. You could reduce the effort of this task by using BIML which could generate the package structure for you. This may also introduce the possibility of parallel loading.
Use a script task instead of a data flow. In the script task, write the rows for each input into a table.
m
If you need to pass multiple inputs to a single script component, the only way I know to do this is by passing the multiple inputs to a UNION ALL component, and then passing the single output from the UNION ALL to the Script.
You'll have to account for any differences between the two columns structures in the UNION ALL, and maybe use derived columns if you need an easy way to identify which original input a row came from.
I know this is way late but I keep seeing this UNION ALL approach and don't like it.
How about this approach.
Run both data flows into their own recordset destination and save into a variable of type ADO object
Create a new dataflow and use a script source and bring in both ADO objects
Fill datatables using adapter and then do what ever you want with them.

SSIS - Reuse Ole DB source when matching Fact against lookup table twice

I am pretty new to SSIS and BI in general, so first of all sorry if this is a newbie question.
I have my source data for the fact table in a csv, so I want to match the ids against the surrogate keys in lookup tables.
The data structure in the csv is like this
... userId, OriginStationId, DestinyStationId,..
What I am trying to accomplish is to match the data against my lookup table. So what I am doing is
Reading Lookup data using OLE DB Source
Reading my csv file
Sorting both inputs by the same field
Doing a left join by Id, in order to get the SK
This way, if there is no match (aka can't find the surrogate key) I can redirect that to a rejected csv and handle it later.
something like this:
(sorry for the spanish!)
I am doing this for each dimension, so I can handle each one with different error codes.
Since OriginStationId and DestinyStationId are two values from the same dimension (they both match against the same lookup table), I wanted to know if there's a way to avoid reading two times the data from the table (I mean, not to use two ole db sources to read twice the data from the same table).
I tried adding a second output to the sort but I am not allowed to. The same goes to adding another output from OLE DB Source.
I see there's an "cache option", is the best way to go ? (Although it would impy creating anyway another OLE DB source.. right?)
The third option I thought of was joining by the two fields, but since there is only one field in the lookup table (the same field) I am getting an error when I try to map both colums from my csv against the same column in my Lookup table
There are columns missing with the sort order 2 to 2
What is the best way to go for this ?
Or I am thinking something incorrectly ?
If something was not clear let me know and I'll update my question
Any time you wish you could have multiple outputs from a component that only allows one, all you have to do is follow that component with the Multicast component, whose sole purpose is to split a Data Flow stream into multiple outputs.
Gonzalo
I have just used this article on how to derive columns for a data warehouse building:- How to Populate a Fact Table using SSIS (part 1).
Using this I built a simple package that reads a CSV file with two columns that are used to derive separate values from the same CodeTable. The CodeTable has two fields Id and Description.
The Data Flow has two "Lookup" tasks. The first one joins the attribute Lookup1 against the Description to derive its Id. The second joins the attribute Lookup2 against the Description to derive a different Id.
Here is the Data Flow:-
Note the "Data Conversion" was required to convert the string attributes from the CSV file into "Unicode string [DT_WSTR]" so they could be joined to the nvarchar(50) description attribute in the table.
Here is the Data Conversion:-
Here is the first Lookup (the second one joins "Copy of Lookup2" to the Description):-
Here is the Data Viewer output with the to two derived Ids CodeTableFirstId and CodeTableSecondId:-
Hopefully I understand your problem and this is of use to you.
Cheers John

Need help to create a SSRS RDL report in specified format

I have to develop a RDL report in the following format:
I have stored procedure returning first block result set i.e. with Sr.No. but don't know how to return result for second block i.e. for <----Current----> <---Last---> block because here I have to show values next to each Label.
Do we need to create multiple DataSet for this task OR we can achieve this in a single stored procedure?
Anybody suggest me how can we achieve this.
One approach in this case would be to add the Label information to the underlying stored procedure, i.e. the same information repeadted for each Code, then only display this information once for each Code in group footer rows.
This assumes that you can't just calculate the Label values for each Code from the rest of the DataSet.
So, making some guesses about your data and assuming your updated DataSet looks like this:
You can create a report similar to this:
Note that the Label information is displayed only once for each Code since the information is in the group footer rows. Just specify the Label fields without any aggregation; this will just take the first row's values.
Results look to match your requirements:
You could approach this other ways, e.g. using the Lookup function or with Subreports, but this approach only required one table and one DataSet so seems simplest to me.

Define same output table across multiple transformations

I have 6 different input datasets. I want to run ETL over all 6 datasets so they all get transformed to the same output table (same columns and types).
I am using Pentaho (Spoon) to do this.
Is there a way I can define an output table schema to be used by all these transformations in Pentaho? I am using MySQL as my output database.
Thanks in advance.
Sounds like you need the Select Values step. Put one of those on the last hop of each dataset's path and make the metadata for the paths all look EXACTLY the same. Then you can connect the output from each Select Values step into a Table Output. All the rows from each set will be mixed together in no particular order.
This can be more challenging than it looks. Spoon will throw errors if any of the fields aren't just exactly identical to the corresponding field from all other datasets. You'll have to find some way to get all the metadata from the datasets to be the same.