You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Vitalii Diravka (Jira)" <ji...@apache.org> on 2022/05/26 14:03:00 UTC
[jira] [Resolved] (DRILL-8169) Add UDFs to HTTP Plugin to Facilitate Joins
[ https://issues.apache.org/jira/browse/DRILL-8169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vitalii Diravka resolved DRILL-8169.
------------------------------------
Resolution: Fixed
> Add UDFs to HTTP Plugin to Facilitate Joins
> -------------------------------------------
>
> Key: DRILL-8169
> URL: https://issues.apache.org/jira/browse/DRILL-8169
> Project: Apache Drill
> Issue Type: Improvement
> Components: Storage - Other
> Affects Versions: 1.20.0
> Reporter: Charles Givre
> Assignee: Charles Givre
> Priority: Major
> Fix For: 2.0.0
>
>
> There are some situations where a user might want to join data with an API result and the pushdowns prevent that from happening. The main situation where this happens is when
> an API has parameters which are part of the URL AND these parameters are dynamically populated via a join.
> In this case, there are two functions `http_get_url` and `http_get` which you can use to faciliate these joins.
> * `http_get('<storage_plugin_name>', <params>)`: This function accepts a storage plugin as input and an optional list of parameters to include in a URL.
> * `http_get_url(<url>, <params>)`: This function works in the same way except that it does not pull any configuration information from existing storage plugins.
> ### Example Queries
> Let's say that you have a storage plugin called `github` with an endpoint called `repos` which points to the url: https://github.com/orgs/\{org}/repos. It is easy enough to
> write a query like this:
> ```sql
> SELECT *
> FROM github.repos
> WHERE org='apache'
> ```
> However, if you had a file with organizations and wanted to join this with the API, the query would fail. Using the functions listed above you could get this data as follows:
> ```sql
> SELECT http_get('github.repos', `org`)
> FROM dfs.`some_data.csvh`
> ```
> or
> ```sql
> SELECT http_get('https://github.com/orgs/\{org}/repos', `org`)
> FROM dfs.`some_data.csvh`
> ```
> ** WARNING: This functionality will execute an HTTP Request FOR EVERY ROW IN YOUR DATA. Use with caution. **
>
--
This message was sent by Atlassian Jira
(v8.20.7#820007)