Visokio website     Downloads     Video tutorials     KnowledgeBase  
Database connections: filtering pass through - Visokio Forums
Database connections: filtering pass through
  • JorgenP January 25, 2012 5:42AM
    Hi Guys - I am fairly new to Omniscope, and need your help. I have some queries in Access that I would like to pass through to Omniscope. However, I would like to decide how much of the data from the Access queries that is been imported.

    In my case, I have 6 queries in Access, which are all linked up with the respondents ID, in order always to know what the individual has answered. My data covers the entire 2011 - but if I only want to drag out certain weeks in 2011, and pass them through to DataManager, is it then possible to have a filter in Omniscope which decides the weeks that are been passed through. At the moment, I am getting the entire dataset from 2011, which makes the system too slow on my machine.
  • 8 Comments
  • Soruban January 25, 2012 7:47AM
    Hi,

    In case you are not already, I suggest you use DataManager to set up your workflow.
    You should use the "Database table" source block to link to your Access Database, then you can use a "Record Filter" to specify the week range you want to have passed into Omniscope.

    If you want more information on DataManager, you might find the video tutorials useful.
    They can be accessed at http://www.visokio.com/video-tutorials.

    Regards.
  •     steve January 25, 2012 8:08AM
    Better still, in "Database table", use the "Filters" tab to specify server-side filtering (i.e. SELECT / WHERE constraints). Whereas Record Filter works client-side after downloading the full data, these work server-side, and avoid the client memory and bandwidth overhead of downloading excluded rows.
  •     tjbate January 25, 2012 8:51AM
    Jorgen - In addition, if you would like to use a random overview of the whole data set while configuring the visualisations, interactive filtering & formulae, add a a Random Sample operation block into the data flow. You can set the upper limit on the number of records to work with in the Loaded in-memory data set (the light blue box). Keeping this sampled in-memeory data set small greatly speeds file configuration work. Increase the sample size progressively, and delete the Sample Block from the flow when you are ready to go into production/publish.
  • JorgenP January 25, 2012 8:54AM
    I appreciate your help - but I cant seem to make the data mount decrease - well from the begining.

    I have already a filter or actually a SQL set up in my database table. As you can see in the attached file, I have 6 queries which are connected to access. The one on the right is the only one which are set up to filter the data. The others dont have the week variable, and therefore the only connecting string between these six queries are the Respondent ID. I was than hoping, to filter on week, which would narrow down the number of IDs, which than again would narrow down the number of records in the other queries.

    The other ones are containing all the data from access. As you can see, they all have about 10454 records, which is way too many, in order to make omniscope to run smoothly. Isnt it possible to set up some sort of master that decides the amount of data, and the specific data.

    My point is, instead of visokio has to upload 10454 records in each query, in order to filter it afterwards, isnt is possible to filter the data and than only get the 344 fields and 702 records uploaded?

  •     steve January 25, 2012 9:06AM
    As I understand you have 6 tables in the same Access file, one of which you are filtering server-side by week. After this, you are merging the results.

    This means that 5 of your blocks are retrieving the full unfiltered data, and then merge/join is effectively filtering the data client-side.

    Server-side filtering using the "Filters" option only works for single tables. To do the filtering on the server in this case, you must also do the join on the server.

    So, use a single Database Table block. Choose "Custom SQL" on the first page. In the "Custom SQL" tab, enter something like this:
    SELECT * FROM a, b, ... WHERE a.id = b.id AND ... AND b.week = 10

    If you're not familiar with SQL, see here:
    http://msdn.microsoft.com/en-us/library/bb243855(v=office.12).aspx
  • JorgenP January 25, 2012 9:21AM
    This might actually work :)

    I will see if I can set up a SQL, which will be able to filteting the right output.

    Thanks guys for your inputs.

    Do any of you know if there is a book or anything besides the information on the Internet that is recommendable to get?
  •     steve January 25, 2012 1:47PM
    I can't recommend any specific books, myself. I'd use something like this:

    SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1

    or

    SELECT table1.*, table2.* FROM table1, table2 WHERE table1.column1 = table2.column1

    to select all columns

    You can add query constraints:

    SELECT table1.*, table2.* FROM table1, table2 WHERE table1.column1 = table2.column1 AND table1.id > 500

    You can create this as a query in access and then create further queries upon those queries if you want to keep your SQL statements simple. Then in Omniscope you simply connect to a single table (in fact the last query you've created).

    Depending on your table and column names, your SQL might need to have these in square brackets, e.g. [table1].[column1]

    I'd recommend searching for "microsoft access sql".
  • JorgenP January 26, 2012 6:08AM
    Thanks Steve

    This should do it - I am now able to combine two tables - so now I am just trying to see how I can combine all 6 tables, and than filter on weeks and narrowing down what output I want.
This discussion has been closed.
← All Discussions

Welcome!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In Apply for Membership