You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
2.9 KiB
Plaintext

TITLE:: FluidDataSetQuery
summary:: Query a FluidDataSet
categories:: UGens>FluidManipulation
related:: Classes/FluidDataSet
DESCRIPTION::
A selection of columns and a set of conditions that match rows of a FluidDataSet.
Use to filter and search in a database of descriptors.
CLASSMETHODS::
METHOD:: new
Make a new instance
ARGUMENT:: server
The server on which to run this object
INSTANCEMETHODS::
PRIVATE:: init
METHOD:: addColumn
Add a column to the query
ARGUMENT:: column
Column index
ARGUMENT:: action
Run when done
METHOD:: addRange
Add a range of columns to the query
ARGUMENT:: start
First index
ARGUMENT:: count
Number of columns
ARGUMENT:: action
Run when done
METHOD:: filter
Filter rows according to some condition.
Example: (3, ">", 0.5) filters rows where the value of the 4th column (starting at 0) is larger than 0.5.
ARGUMENT:: column
Column index
ARGUMENT:: condition
Condition string. Possible values: "==", "!=", "<", "<=", ">", ">="
ARGUMENT:: value
Condition value
ARGUMENT:: action
Run when done
METHOD:: and
Add a condition to an existing filter with an "and" connector.
ARGUMENT:: column
Column index
ARGUMENT:: condition
Condition string. Possible values: "==", "!=", "<", "<=", ">", ">="
ARGUMENT:: value
Condition value
ARGUMENT:: action
Run when done
METHOD:: or
Add a condition to an existing filter with an "or" connector.
ARGUMENT:: column
Column index
ARGUMENT:: condition
Condition string. Possible values: "==", "!=", "<", "<=", ">", ">="
ARGUMENT:: value
Condition value
ARGUMENT:: action
Run when done
METHOD:: limit
Limit the number of resulting rows.
ARGUMENT:: rows
Maximum number of rows
ARGUMENT:: action
Run when done
METHOD:: clear
Clear the query, remove all columns, filters and limit.
ARGUMENT:: action
Run when done
METHOD:: transform
Apply the query to a source link::Classes/FluidDataSet:: and write to a destination. Can be the same.
ARGUMENT:: sourceDataSet
Source data, or the DataSet name
ARGUMENT:: destDataSet
Destination data, or the DataSet name
ARGUMENT:: action
Run when done
EXAMPLES::
code::
s.boot;
// Create a DataSet with random data
~dataSet= FluidDataSet(s,\help_fluid_dataset_query);
(
~points = 100.collect{|i|5.collect{|j|j+(i/100)}};
~dataSet.clear;
~tmpbuf = Buffer.alloc(s,5);
fork{
s.sync;
~points.do{|x,i|
~tmpbuf.setn(0,x);
~dataSet.addPoint(i,~tmpbuf);
s.sync
}
}
)
//check the source
~dataSet.print;
// Prepare a FluidDataSetQuery object
~query = FluidDataSetQuery.new;
~out = FluidDataSet(s,\help_fluid_dataset_query_out);
// prepare a simple query
~query.filter(0,"<",0.04);
~query.addColumn(2);
~query.transform(~dataSet, ~out);
// check the result
~out.print;
//prepare a more complex query
~query.clear;
~query.filter(0,">",0.03);
~query.and(1,"<",1.08);
~query.or(2,">",2.98);
~query.addRange(1,2);
~query.transform(~dataSet, ~out);
// Check the results
~out.print;
::