Orange correspondence analysis widget - widget

Can anyone tell me how to use the Orange correspondence analysis widget?
I have a table of 11 columns of data with a first column of row names. I have tried to select the data using select attributes widget and connecting to the correspondence analysis widget. But, I did not get any result. Do I have to connect to another widget before the correspondence analysis widget?
Okay, I don't know what code I'm using. I don't know how to access code I was just using the visual interface, which I thought should do the job.

The input data for the correspondence analysis need to have discrete variables.
If you have continuous variables consider PCA instead.
For a simple example use of CA, load the smokers_ct.tab dataset and use it in CA widget.

Related

Alternative approach to parameters in Invantive Control to control query outcome

I would like to use parameters in Invantive control.
For example, I would like to retrieve only the hours, of Exact Online Project management which, are in the given data parameters.
There are three often used approaches:
Use parameters in the model editor.
Use Excel values.
Use data from the databases involved.
Model Parameters
To use parameters in the model editor, you define them in the model editor:
Select a unique code.
Possibly provide a default value (always string, use to_... or casting to change it in the queries).
Define list-of-values providing a quick pick.
The unique code is in general all in uppercase and in the format P_..., but as long it is a legal identifier anything should work.
To use them in one or more block queries or triggers:
Use the building blocks button.
Or type $P{CODE} in the SQL or trigger for Excel.
The values can be entered using the parameters button (the green funnel in the Control ribbon):
Please note that parameters are always bound as parameters, and not lexicographically substituted so you can NOT say: select * from $P{TABLE_NAME}.
Please note that parameters can be dependent on each other, so in the query for the parameter you can use another parameter. Such as first choosing the country of a project and then showing a list of projects in that country. But be wise, avoid recursion and other overly complex scenarios; the user will not easily understand it.
Excel values
To use Excel values, you can define them as follows:
Enter a value somewhere in Excel.
Optionally define a named range to make it easier to change the location.
You can of course assign lists as normal in Excel as a pop-up or other validations. Also cell locking works fine.
To use the actual value in a query or trigger of Invantive Control you can use the building blocks in the query editor or use something like select * from table where code = $X{projectcode} or select * from table where code = $X{B2&C2&D2}. The last one shows that you can also use other type of Excel expressions.
Note that Excel parameters are also bound as parameters to the query, but that they are also typed, so the following query can be different depending on the general format of the Excel cell:
select *
from table
where code like $X{CELL}
When cell is a text, the database or Exact Online in this case will retrieve:
select *
from table
where code like :ex0
With ex0 being a text such as '8%'. But when cell is a percentage, the contents might still display in Excel as '8%', but the actual query will be with identical to the outcome of:
select *
from table
where code like 0.08
Caused me some headaches, but typing is in general a useful feature, especially with dates.
Parameter using database data
Option 3 is practically not feasible with Exact Online, since they are little possibilities to create your own tables and/or fields.
On other platforms such as Oracle you might want to enter new rows in Invantive Control in Excel and them upload them on sync to provide parameters. Especially handy in case of complex risk models.

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.

How does the retrieve operation of a JDBCOutboundInterface in IBM Integration Designer work?

I have following issue with IBM Integration Designer (BPM Advanced 8.5.6):
I want to retrieve a row from a database table, thus I created a JDBCOutbound interface via wizard. The Designer automatically creates a Business Object Type as input for this operation, being built up of one string named "verb" and another generated BO which just has all the columns of my table as attributes. When I now try to assign something to the "verb" variable I only have the values "insert, update and delete" as possible values in the dropdown. But I actually want a Select.
Does anybody know what to do in this case?
Thanks in advance!
David
I found out that the verb is ignored, when you have a retrieve operation. All you have to pass is the BO with the field values you want to search for.

Representing an hierarchy in DAX

I have a cube that contains a table with the following structure:
Level1 | Level2 | Level3 |
USA NY New-York
USA NY Niagra Falls
USA WA Washington
France Paris Montmarte
I want to query this so I get the following, using DAX:
USA
NY
New-York
Niagra Falls
WA
Washington
France
Paris
Montmarte
Is this possible to do in one DAX query? Its a representation of the hierarchy.
In the end I want to use this as a filter for an reporting services report, where the user should be able to easy navigate through the hierarchy.
Reporting Services understands hierarchies as represented in the first example. You can then use a matrix or tablix to represent the hierarchy however you want, including emulating an Excel pivot table, which is what it looks like you're trying to do. Example.
While I can think of several ways to represent the hierarchy by using significant whitespace as you've shown in the second example, I will not waste my time or yours, because there is no reporting tool I know of that would be able to make sense of the hierarchy represented in such a format. There is no need to format the hierarchy in the query.
Queries retrieve data. Reporting tools format and display the data prettily. No need to shoehorn reporting tool functionality into a query language.
Edit: I missed the section on using this as a filter.
Reporting Services does not have any native concept of a filter as a report element. Filters are typically implemented as parameters to the report, and you can set up those parameters to follow the hierarchy by making them cascading parameters.
If you'd like to have a report element that acts as a filter, then you can emulate slicers with report elements with some wonky workarounds, but it's not fun to implement, so it's time to start asking how much you want to do this in SSRS, or how much you need to have a specific visual implementation of the filter. Here's a resource on emulating slicers in SSRS.
You could do this based on a matrix, as described above, to represent the hierarchy visually and allow selections within that matrix to reload the report with new selections. It will not be fun. It will be clunky. It will not allow any sort of quick multi-select; i.e. if I want to select 5 items, I will have to go through 5 iterations of clicking on the element and waiting for the report to reload completely. Caching will be your friend.

How do I re-use reports on different datasets?

What is the best way to re-use reports on different tables / datasets?
I have a number of reports built in BIRT, which get their data from a flat (un-normalized) MySQL table, the data which in turn has been imported from an excel sheet.
In BIRT, I've constructed my query like this, such that I can change the field names and re-use the report:
SELECT * FROM
(SELECT index as "Index", name as "Name", param1 as "First Parameter" FROM mytable) t
However, then when I switch to a new client's data, I need to change the query to the new data source and this doesn't seem sustainable or anywhere near a good practice.
So... what is a good practice?
Is this a reporting issue, or a database-design issue?
Do I create a standard view that the report connects to?
If I have a standard view, do I create a different view with the same structure for each data table, or keep replacing the view with a reference to the correct data table each time I run the report?
What's annoying is the excel sheets keep changing - new columns are added, and different clients name their data differently. Even if I can standardize this, I'd store different client data in different tables... so would I need to create a different report for each client, or pass in the table name to the report?
There are two ways and the path you choose is really dictated by how much flexibility you have architecturally.
First, you are on the right track by renaming your selected columns to a common name since that name is what is used to bind the data to the control on the report. Have you considered a stored procedure to access the data? This removes the query from the report and allows you to set up the stored proc on any database to return the necessary columns. If you cannot off-load to a stored proc, you can always rely on altering the query text at run-time. Because BIRT reports are not compiled (they are XML) you can change the query based on parameters and have it executed for each run of the design. Look at the onCreate event for the Data Set and you can access this.queryText and do any dynamic string substitution you need via JavaScript. Hidden parameters are a good way to help alter/tune the query. If you build the Data Set correctly, the changing of the underlying data could be as easy as changing the Data Source and then re-associating the Data Set to the new Data Source (in the edit data set window). I have done this MANY times and it works well. If you are going down this route, I would add the Data Source(s), Data Set(s) and any controls that they provide data to a report library. With the library you can use the controls in many reports and maintain them in one spot. If you update the library, all the reports using the library get updated as well.
Alternatively, if you want to really commit to a fully re-usable strategy that allows you to build a library of reusable components you could check out the free Reusable Component Library at BIRT Exchange (Reusable Component Library). In my opinion this strategy would give you the re-use you are looking for but at the expense of maintainability. It is abstraction to the point of obfuscation. It requires totally generic names for columns and controls that make debugging very difficult. While it would not be my first choice (the option above would be) others have used it successfully so I thought I would include it here since it directly speaks to your question.