blob: d20a2a96b3dbb3225171d851f7a260c8e99e517c [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryAirtableTable</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryAirtableTable</h1><h2>Description: </h2><p>Query records from an Airtable table. Records are incrementally retrieved based on the last modified time of the records. Records can also be further filtered by setting the 'Custom Filter' property which supports the formulas provided by the Airtable API. This processor is intended to be run on the Primary Node only.</p><p><a href="additionalDetails.html">Additional Details...</a></p><h3>Tags: </h3><p>airtable, query, database</p><h3>Properties: </h3><p>In the list below, the names of required properties appear in <strong>bold</strong>. Any other properties (not in bold) are considered optional. The table also indicates any default values, and whether a property supports the <a href="../../../../../html/expression-language-guide.html">NiFi Expression Language</a>.</p><table id="properties"><tr><th>Display Name</th><th>API Name</th><th>Default Value</th><th>Allowable Values</th><th>Description</th></tr><tr><td id="name"><strong>API URL</strong></td><td>api-url</td><td id="default-value">https://api.airtable.com/v0</td><td id="allowable-values"></td><td id="description">The URL for the Airtable REST API including the domain and the path to the API (e.g. https://api.airtable.com/v0).<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name"><strong>API Key</strong></td><td>api-key</td><td></td><td id="allowable-values"></td><td id="description">The REST API key to use in queries. Should be generated on Airtable's account page.<br/><strong>Sensitive Property: true</strong></td></tr><tr><td id="name"><strong>Base ID</strong></td><td>base-id</td><td></td><td id="allowable-values"></td><td id="description">The ID of the Airtable base to be queried.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name"><strong>Table ID</strong></td><td>table-id</td><td></td><td id="allowable-values"></td><td id="description">The name or the ID of the Airtable table to be queried.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Fields</td><td>fields</td><td></td><td id="allowable-values"></td><td id="description">Comma-separated list of fields to query from the table. Both the field's name and ID can be used.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Custom Filter</td><td>custom-filter</td><td></td><td id="allowable-values"></td><td id="description">Filter records by Airtable's formulas.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name"><strong>Query Time Window Lag</strong></td><td>query-time-window-lag</td><td id="default-value">3 s</td><td id="allowable-values"></td><td id="description">The amount of lag to be applied to the query time window's end point. Set this property to avoid missing records when the clock of your local machines and Airtable servers' clock are not in sync. Must be greater than or equal to 1 second.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name"><strong>Web Client Service Provider</strong></td><td>web-client-service-provider</td><td></td><td id="allowable-values"><strong>Controller Service API: </strong><br/>WebClientServiceProvider<br/><strong>Implementation: </strong><a href="../../../nifi-web-client-provider-service-nar/1.19.0/org.apache.nifi.web.client.provider.service.StandardWebClientServiceProvider/index.html">StandardWebClientServiceProvider</a></td><td id="description">Web Client Service Provider to use for Airtable REST API requests</td></tr><tr><td id="name">Query Page Size</td><td>query-page-size</td><td></td><td id="allowable-values"></td><td id="description">Number of records to be fetched in a page. Should be between 1 and 100 inclusively.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr><tr><td id="name">Max Records Per FlowFile</td><td>max-records-per-flowfile</td><td></td><td id="allowable-values"></td><td id="description">The maximum number of result records that will be included in a single FlowFile. This will allow you to break up very large result sets into multiple FlowFiles. If no value specified, then all records are returned in a single FlowFile.<br/><strong>Supports Expression Language: true (will be evaluated using variable registry only)</strong></td></tr></table><h3>Relationships: </h3><table id="relationships"><tr><th>Name</th><th>Description</th></tr><tr><td>success</td><td>For FlowFiles created as a result of a successful query.</td></tr></table><h3>Reads Attributes: </h3>None specified.<h3>Writes Attributes: </h3><table id="writes-attributes"><tr><th>Name</th><th>Description</th></tr><tr><td>record.count</td><td>Sets the number of records in the FlowFile.</td></tr><tr><td>fragment.identifier</td><td>If 'Max Records Per FlowFile' is set then all FlowFiles from the same query result set will have the same value for the fragment.identifier attribute. This can then be used to correlate the results.</td></tr><tr><td>fragment.count</td><td>If 'Max Records Per FlowFile' is set then this is the total number of FlowFiles produced by a single ResultSet. This can be used in conjunction with the fragment.identifier attribute in order to know how many FlowFiles belonged to the same incoming ResultSet.</td></tr><tr><td>fragment.index</td><td>If 'Max Records Per FlowFile' is set then the position of this FlowFile in the list of outgoing FlowFiles that were all derived from the same result set FlowFile. This can be used in conjunction with the fragment.identifier attribute to know which FlowFiles originated from the same query result set and in what order FlowFiles were produced</td></tr></table><h3>State management: </h3><table id="stateful"><tr><th>Scope</th><th>Description</th></tr><tr><td>CLUSTER</td><td>The last successful query's time is stored in order to enable incremental loading. The initial query returns all the records in the table and each subsequent query filters the records by their last modified time. In other words, if a record is updated after the last successful query only the updated records will be returned in the next query. State is stored across the cluster, so this Processor can run only on the Primary Node and if a new Primary Node is selected, the new node can pick up where the previous one left off without duplicating the data.</td></tr></table><h3>Restricted: </h3>This component is not restricted.<h3>Input requirement: </h3>This component does not allow an incoming relationship.<h3>System Resource Considerations:</h3>None specified.</body></html>