> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinetica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# /filter/bytable

```
URL: http://<db.host>:<db.port>/filter/bytable
```

Filters objects in one table based on objects in another table. The user must
specify matching column types from the two tables (i.e. the target table from
which objects will be filtered and the source table based on which the filter
will be created); the column names need not be the same. If a input parameter
*view\_name* is specified, then the filtered objects will then be put in a newly
created view. The operation is synchronous, meaning that a response will not be
returned until all objects are fully available in the result view. The return
value contains the count (i.e. the size) of the resulting view.

## Input Parameter Description

<ParamField body="table_name" type="string">
  Name of the table whose data will be filtered, in \[schema\_name.]table\_name format, using standard [name resolution rules](../../concepts/tables/#table-name-resolution). Must be an existing table.
</ParamField>

<ParamField body="view_name" type="string">
  If provided, then this will be the name of the view containing the results, in \[schema\_name.]view\_name format, using standard [name resolution rules](../../concepts/tables/#table-name-resolution) and meeting [table naming criteria](../../concepts/tables/#table-naming-criteria). Must not be an already existing table or view.

  The default value is ''.
</ParamField>

<ParamField body="column_name" type="string">
  Name of the column by whose value the data will be filtered from the table designated by input parameter *table\_name*.
</ParamField>

<ParamField body="source_table_name" type="string">
  Name of the table whose data will be compared against in the table called input parameter *table\_name*, in \[schema\_name.]table\_name format, using standard [name resolution rules](../../concepts/tables/#table-name-resolution). Must be an existing table.
</ParamField>

<ParamField body="source_table_column_name" type="string">
  Name of the column in the input parameter *source\_table\_name* whose values will be used as the filter for table input parameter *table\_name*. Must be a geospatial geometry column if in 'spatial' mode; otherwise, Must match the type of the input parameter *column\_name*.
</ParamField>

<ParamField body="options" type="map of string to strings">
  Optional parameters.

  The default value is an empty map ( \{} ).

  <Expandable title="options">
    <ParamField body="create_temp_table">
      If *true*, a unique temporary table name will be generated in the sys\_temp schema and used in place of input parameter *view\_name*. This is always allowed even if the caller does not have permission to create tables. The generated name is returned in *qualified\_view\_name*.

      The default value is `false`.

      The supported values are:

      * true
      * false
    </ParamField>

    <ParamField body="collection_name">
      \[DEPRECATED--please specify the containing schema for the view as part of input parameter *view\_name* and use [/create/schema](/content/api/rest/create_schema_rest) to create the schema if non-existent] Name of a schema for the newly created view. If the schema is non-existent, it will be automatically created.
    </ParamField>

    <ParamField body="filter_mode">
      String indicating the filter mode, either *in\_table* or *not\_in\_table*.

      The default value is `in_table`.

      The supported values are:

      * in\_table
      * not\_in\_table
    </ParamField>

    <ParamField body="mode">
      Mode - should be either *spatial* or *normal*.

      The default value is `normal`.

      The supported values are:

      * normal
      * spatial
    </ParamField>

    <ParamField body="buffer">
      Buffer size, in meters. Only relevant for *spatial* mode.

      The default value is `0`.
    </ParamField>

    <ParamField body="buffer_method">
      Method used to buffer polygons.  Only relevant for *spatial* mode.

      The default value is `normal`.

      * **normal**
      * **geos**: Use geos 1 edge per corner algorithm.
    </ParamField>

    <ParamField body="max_partition_size">
      Maximum number of points in a partition. Only relevant for *spatial* mode.

      The default value is `0`.
    </ParamField>

    <ParamField body="max_partition_score">
      Maximum number of points \* edges in a partition. Only relevant for *spatial* mode.

      The default value is `8000000`.
    </ParamField>

    <ParamField body="x_column_name">
      Name of column containing x value of point being filtered in *spatial* mode.

      The default value is `x`.
    </ParamField>

    <ParamField body="y_column_name">
      Name of column containing y value of point being filtered in *spatial* mode.

      The default value is `y`.
    </ParamField>
  </Expandable>
</ParamField>

## Output Parameter Description

The Kinetica server embeds the endpoint response inside a standard response structure which contains status information and the actual response to the query.  Here is a description of the various fields of the wrapper:

<ResponseField name="status" type="String">
  'OK' or 'ERROR'
</ResponseField>

<ResponseField name="message" type="String">
  Empty if success or an error message
</ResponseField>

<ResponseField name="data_type" type="String">
  'filter\_by\_table\_response' or 'none' in case of an error
</ResponseField>

<ResponseField name="data" type="String">
  Empty string
</ResponseField>

<ResponseField name="data_str" type="JSON or String">
  This embedded JSON represents the result of the /filter/bytable endpoint:

  <Expandable title="data_str">
    <ResponseField name="count" type="long">
      The number of records in input parameter *table\_name* that have input parameter *column\_name* values matching input parameter *source\_table\_column\_name* values in input parameter *source\_table\_name*.
    </ResponseField>

    <ResponseField name="info" type="map of string to strings">
      Additional information.

      The default value is an empty map ( \{} ).

      <Expandable title="info">
        <ResponseField name="qualified_view_name">
          The fully qualified name of the view (i.e. including the schema).
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>

  Empty string in case of an error.
</ResponseField>
