Overview
A pipe is a connector that links two elements in a PhixFlow model and sends data from the input to the output. Pipes allows you to control which attributes and which records from the input are delivered by to the output, although in most cases - with minimal configuration - you will get all columns and the records from the current run.
The pipe must be enabled to make it active.
For advanced configuration, see Advanced Pipe Configuration.
For information about the properties toolbar, and about the sections Parent Details, Analysis Models, Description and Audit Summary, see Common Properties. For a full list of all the PhixFlow property tabs and windows, see Property Tabs.
A pipe joining a datasource to a data collector has no details to edit. All the configuration for the output data set occurs in the collector - either a database collector for a database datasource, or an HTTP collector for an HTTP datasource.
Basic Settings
Field | Description |
---|---|
Name | Enter a name. The name is used to refer to the pipe in other model elements. Pipe names default to The name:
|
Enabled | Untick to prevent the pipe from being used during an analysis run. Tick to indicate the pipe properties are complete and the pipe is ready to be used. |
Static | Normally when a pipe requests data from a non-static input stream, that stream will first attempt to bring itself up to date, generating new stream sets as necessary, before supplying the data requested. However, if this field is ticked, the input stream will not run. Pipes from collectors cannot be marked as static. Untick when the pipe requests data from a non-static input stream, that stream will first attempt to bring itself up to date, generating new stream sets as necessary, before supplying the data requested. Tick to prevent the input stream from updating itself. The pipe will pull the existing data from the input stream. Pipes from collectors cannot be marked as static. |
Mandatory | Untick Tick to indicate that, when multiple streams are being merged, there must be an input record from this pipe for an output record to be generated by the output stream. If this is a push pipe with positive offsets and this option is ticked then the notification to create another stream set will only be pushed along the pipe if the last stream set created contains at least one record. This causes the pipe to present each candidate set to the output stream in a different way than usual. |
Multiplier | Untick is the default. Tick so that, for each output record generated by a stream, the stream will get a set of records from each of its input pipes. If the multiplier flag is ticked on one of these, then the stream will generate an output record for each record from the set of records provided by the multiplier pipe. For each output record, each of the other input pipes will provide the same set of records as normal. |
Type | Select:
|
Data to Read | Select the type of input data to use.
|
Read Future Data | Use this option to exclude or include input streams sets that have future dates relative to the stream set you are generating. For details about how future stream sets occur, see Managing Future Stream Sets, above. Untick to exclude future stream sets from this analysis run. This is the default. Tick to include future stream sets in this analysis run. For example, for a stream with Period: Transactional , you will want to include new streams sets that are being added to the input stream after your analysis run starts. |
Input | The name of the object at the start of the pipe. |
Output | The name of the stream at the end of the pipe. |
Managing Future Stream Sets
In some circumstances the input stream may have stream sets that have dates in the future relative to the stream set being generated for the output stream. This may happen, for example, if:
- you roll-back some stream sets on the output stream
- but do not roll-back the corresponding stream sets on the input stream
- and then request that the output stream is brought up to date.
Some of the stream sets on the input stream will have dates in the future relative to some of the stream sets you are rebuilding.
By default, the Read Future Data check box is not ticked. This means pipes ignore any stream sets with dates in the future relative to the stream set you are generating. You want to ignore future stream sets when you rebuild an old stream set, because you want the pipe to retrieve the same data on the rerun as it retrieved when the stream set was first built.
When you run analysis on a stream with a transactional period, it is possible that as your analysis is still running, a different run can start and complete. This run can generate additional stream sets on the input stream with a future data relative to the date of the stream set you are generating. For transactional input streams, you want the pipe to use these future streams. To do this, tick the Read Future Data check box.
Filter
Filters are made up of a set of clauses; each clause in turn contains a number of conditions. These conditions must be satisfied for data to be passed through the pipe.
When the pipe Type is Lookup, the filter controls which data will be cached in memory.
Field | Description |
---|---|
Cache Size | Available when Type is Lookup. For lookup pipes, PhixFlow uses the pipe cache when it looks-up data from streams or database collectors. For efficiency, the records are cached (stored temporarily in memory) so that if the same set of records need to be looked up again they are readily available without going back to the database. Enter a number to set a limit on the data cache size available for the pipe. You need to estimate the largest number of records that the lookup pipe will return on a single read. Check whether PhixFlow is looking up:
WHERE AccountNumber = _out.AccountNum If you do not set a limit for the cache, PhixFlow uses the system default set in System Configuration → System Tuning → Maximum Pipe Cache Size. |
Pipe View | Use this option to look up data from attributes that are present in a stream view on the input stream. Select a stream view from the list. If the input stream has no views, the list will be empty. Sorting or filtering of records must be set directly on the pipe. It is not inherited from the pipe view. Use the pipe view to limit the attributes that the pipe reads when a stream has lots of attributes containing many data records but you only need data from a few attributes. Only the data for the attributes in the stream view are sent to the output stream. Pipe views are very useful:
To set up a pipe view:
|
Include History Records | Untick to filter out superseded records. Tick to include superseded records. |
Condition | Select one of the options
To add more conditions, hover your mouse pointer over this field to display the button and add another condition to your filter. |
Clause | Select an option from the list. PhixFlow adds more fields where you can:
|
Filter Icons | Hover your mouse pointer over conditions or clauses to display:
|
Cache Extraction Filter | A cache extraction filter allows you to further filter the data retrieved by a pipe. These are not commonly used, but are sometimes helpful when either:
For case 1, when using a lookup pipe, data retrieved is stored in a cache. See cache size for details. The cache extraction filter allows you, as you are processing a set of output records, to use different cached entries from the lookup for each of the records are you are processing. This is very fast compared to looking up from the source (i.e. going back to an external DB table or even another PhixFlow stream) for each output record. E.g. you want to look up the credit rating for a customer for a set of transactions - in the output, each transaction is represented by a single output record. You create an indexed lookup pipe using CustNo as the key for the index. This means that for each new CustNo you encounter in the data, all the credit rating entries for that CustNo would be retrieved by the pipe and placed into the cache. The credit rating for each customer is fully historied, so you get a number of entries for each CustNo. To get the relevant lookup entry for each output report (each transaction), you need to compare the transaction date of the output record to the dates of credit rating entries in the cache. So to extract the relevant record, you include a cache extraction filter in the form: StartDate >= _out.TransDate && (EndDate <= _out.TransDate || EndDate == _NULL) Cache extraction filters are entered free hand. The attribute names referenced must exist in a stream. This means that the each attribute must be one of:
|
Filter Examples
Filter on Current User
Sometimes when running analysis you want to select, from the source, only records belonging to the currently logged in user. To set a filter where, say, an attribute in the source Owner
equals the current logged in user, add a condition to the filter like this:
Owner
Equals _user.name
fx
Enter a list of values for an "Is In" or "Is Not In" filter
If you want to based on a list of values, use the Is in or Is not in comparators, then type the list of values into the comparison field as a comma separated list like this:
Country
Is in England, France, Germany
ABC
In this case you must NOT click the ABC icon to convert the value to an fx, because this will indicate that the value is a formula; it must be left as a literal value. If you do click the ABC icon, then the value must be entered like this:
Country
Is in ["England","France","Germany"]
fx
Sort/Group
For lookup pipes this section is called Order/Index.
Use this section to group and sort data as it comes through the pipe. This section has:
- a toolbar with standard buttons
- a grid that lists the attributes that you want to sort or use to group
- below the grid are the following options:
Field | Description |
---|---|
Maximum Number of records per Group | Enter an upper limit for grouped records. When collating the input records into groups, PhixFlow uses the specified sort order. When it has added the maximum number of records, any more records for the group are ignored. This can be useful if you want the most recent record for an attribute that has many records.
|
Index Type | Available when Type is Look-up. Look-up pipes can be configured for fast "indexed" access to cached data collected from external tables, files or from other streams. Indexed access is controlled through configuring a pipe with an index and setting index expressions on grouping attributes. If the Type field on the Pipe is set to 'Look-up' then the field "Index Type" becomes available. This can have the value "None" meaning that there are no index keys or "Exact Match", "Best Match" or "Near Match" as described below:
|
Using the Sort/Group Grid
To add a stream attribute to the list:
- click Show Attributes to open the list of attributes in the input stream
- drag a stream attribute into the grid.
To remove an attribute, click Permanently Delete in the toolbar.
To set the sort or group properties for an attribute, double-click its name in the grid. If you want to create a new attribute that is not present in the input stream, in the section toolbar, click Add. PhixFlow opens the attribute's sort properties:
Field | Description |
---|---|
Attribute | For input stream attributes, PhixFlow displays the attribute name. (Read-only) For a new attribute, enter a name. |
Order | Enter the number for the order the attribute appears in the grid and the order in which it is processed. Other attributes are renumbered. |
Direction | Select the sort order
|
Group | Untick by default, data is not grouped. Tick to group data records by the value in this attribute. If this attribute is part of the candidate key set, you must tick the Group check box. Otherwise, the attributes will be used only to sort the data in the candidate set. |
Index Expression | This field is available for lookup pipes with an Index Type option selected. Look-up pipes can be configured for fast "indexed" access to cached data. This data is collected from external tables, files or from other streams. Indexed access is controlled through configuring a pipe with an index and setting index expressions on "Group By" attributes here. |
Audit Summary | See Common Properties. |
In some cases, you may have a pipe connected to a database collector, which pulls data from an external database table. In these cases, the fields in the database must have matching attribute names in the output stream. You can refer to it using the format _out.AttributeName
Aggregate Attributes
Use this section to define the properties of data that you want to combine as it comes through the pipe.
You cannot aggregate data from attributes if the pipe's input is from:
If you need to aggregate data from a database collector, you can use an SQL query.
This section has:
- a toolbar with standard buttons
- a grid that lists the attributes that you want to aggregate.
Using the Aggregate Attributes Grid
To add a stream attribute to the list:
- click Show Attributes to open the list of attributes in the input stream
- drag a stream attribute into the grid.
To remove an attribute, click Permanently Delete in the toolbar.
To set the properties for an aggregate attribute, double-click its name in the grid. PhixFlow opens the attribute's sort properties:
Field | Description |
---|---|
Stream Function | Select an function to combine stream data records.
See Aggregate Function for details. Make sure the function matches the data in the attribute. For example, you cannot Sum text. |
Attribute | Select the stream attribute aggregated from the list of attributes in the input stream. PhixFlow does not use the value in this field if the Aggregate Function is Count. |
Name | Enter the name for the aggregated attribute. This can be the same as the original attribute. |
Order | The order of the aggregate attribute in the output stream. |
Advanced
The following options are available when the pipe Type is Push or Pull. Allow Incomplete Stream Sets is also available when the pipe Type is Lookup.
Field | Description |
---|---|
Data Expected | Untick means the pipe may receive no data from its input during an analysis run. Tick means PhixFlow reports an error if the pipe receives no data from the input datasource, collector or stream during an analysis run. |
Allow Incomplete Stream Sets | Untick to complete a stream set before passing the data to the output stream. During the analysis run, PhixFlow pulls data into the input stream until the stream set is complete. If it cannot complete the stream set, PhixFlow reports an error message. PhixFlow cannot complete a stream set if:
Tick PhixFlow ignores incomplete stream sets in a static input stream and does not report an error. You must tick this check box on all the pipes that will read from a static (or effectively static) input stream in the analysis run. PhixFlow will report an error if there is any pipe trying to complete the stream set during the analysis run. Pipes that are not used in the analysis run do not try to complete a stream set, so will not report an error. (Unused pipes can occur if they lead to streams on branches of the model that are not being run.) |
Buffer Size | Enter a number for the buffer size used to perform the stream calculation. If a large amount of data is being processed, then setting a large buffer size will give better performance. |
Max Records To Read | Enter a number for the maximum number of records that should be read down this pipe. The pipe may read more than this number of records if it is configured to carry out multiple reads simultaneously. For example:
|
Strategy | Select an option to specify how this pipe should be implemented. See the section on Directed Merge Strategy
|
Max Workers | This field is available when Strategy is Directed Enter the maximum number of concurrent worker tasks. When no value is specified, this defaults to 1. |
Worker Size | This field is available when Strategy is Directed Enter the number of key values to read for a single worker task, which runs a single select statement. When no value is specified, this defaults to 1000. This is the maximum value that can be used when reading from an Oracle database. |
Log Traffic | This option is affected by system logging options; see System Logging Configuration.
To change this property, you must have the Modify System Logging Configuration privilege. Untick to prevent logging. Ticking this box has no effect when the system logging option is ticked. Tick to log details of communication. Ticking this box has no effect when the system logging option Allow Logging is not ticked. |
Custom Data to Read
The following properties are available in Basic Settings when you set Data To Read to Custom.
Field | Description |
---|---|
Only collect from same run | Every time the analysis engine runs, all of the stream sets that are created by all of the streams affected by that analysis run are given the same Run ID. Untick so the pipe can collect stream sets with different Run IDs. Tick so that the pipe will only collect stream sets from the input stream that have the same Run ID as the stream set currently being created by the output stream. You should only tick this check box if both the input and output streams have Period set to Transactional. |
From Offset | Enter the offset applied to the start of the collection period, relative to the period in the output stream that requires populating. |
To Offset | Enter the offset applied to the end of the collection period, relative to the period in the output stream that requires populating. |
Max Stream Sets | Enter the number of stream sets to be retrieved from the input stream. For a push pipe with positive offsets. enter the maximum number of stream sets that can be created i.e. the maximum number of cycles this pipe can initiate. |
Historied | Untick so that all data will be collected from the input stream, regardless of period. In this case, any From Offset or To Offset values determine whether the required data periods in the input stream exist before the stream calculation can be carried out. Tick so that the pipe will collect data from the input stream by period. For example, if:
the pipe reads data from the input stream for the period 17/10/07 - 18/10/07. |