--- warning: DO NOT CHANGE THIS MANUALLY, THIS IS GENERATED BY https://github.com/duckdb/community-extensions repository, check README there title: erpl_odata excerpt: | DuckDB Community Extensions (Formerly erpl_web.) ERPL is a DuckDB extension to connect to API based ecosystems via standard interfaces like OData, GraphQL and REST. This works e.g. for SAP ERP, SAP Ariba, SAP C4C, Microsoft Dynamics and many more. extension: name: erpl_odata description: (Formerly erpl_web.) ERPL is a DuckDB extension to connect to API based ecosystems via standard interfaces like OData, GraphQL and REST. This works e.g. for SAP ERP, SAP Ariba, SAP C4C, Microsoft Dynamics and many more. language: C++ build: cmake excluded_platforms: "windows_amd64_rtools;windows_amd64_mingw;wasm_mvp;wasm_eh;wasm_threads;" license: BSL 1.1 requires_toolchains: "cmake, openssl" maintainers: - jrosskopf repo: github: DataZooDE/erpl-odata ref: e7cc326bd2e126189561c9469fa9aabbc33134bd variegata: e7cc326bd2e126189561c9469fa9aabbc33134bd extension_star_count: 31 extension_star_count_pretty: 31 extension_download_count: 1233 extension_download_count_pretty: 1.2k image: '/images/community_extensions/social_preview/preview_community_extension_erpl_odata.png' layout: community_extension_doc --- ### Compatibility Matrix This table covers all DuckDB releases that have not reached [end-of-life](https://duckdb.org/release_calendar), including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 | | :--- | :---: | :---: | :---: | :---: | :---: | | Linux AMD64 | ❌ | ❌ | ❌ | ✅ | ✅ | | Linux ARM64 | ❌ | ❌ | ❌ | ✅ | ✅ | | macOS AMD64 | ❌ | ❌ | ❌ | ✅ | ✅ | | macOS ARM64 | ❌ | ❌ | ❌ | ✅ | ✅ | | Windows AMD64 | ❌ | ❌ | ❌ | ✅ | ✅ | | Windows ARM64 | ❌ | ❌ | ❌ | ❌ | ❌ | | WebAssembly | ❌ | ❌ | ❌ | ❌ | ❌ | ### Installing and Loading ```sql INSTALL {{ page.extension.name }} FROM community; LOAD {{ page.extension.name }}; ``` {% if page.docs.hello_world %} ### Example ```sql {{ page.docs.hello_world }}``` {% endif %} {% if page.docs.extended_description %} ### About {{ page.extension.name }} {{ page.docs.extended_description }} {% endif %} ### Added Functions | function_name | function_type | description | comment | examples | |-------------------------------|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | bc_describe | table | Describe the schema (property names, types, keys) of a Business Central entity. | NULL | [SELECT * FROM bc_describe('customers')] | | bc_read | table | Read data from a Business Central entity with filter and predicate pushdown support. | NULL | [SELECT * FROM bc_read('customers')] | | bc_show_companies | table | List all companies accessible in Microsoft Dynamics 365 Business Central. | NULL | [SELECT * FROM bc_show_companies()] | | bc_show_entities | table | List all OData entity sets available in Microsoft Dynamics 365 Business Central. | NULL | [SELECT * FROM bc_show_entities()] | | crm_describe | table | Describe the attribute schema (names, types, keys) of a Microsoft Dataverse entity. | NULL | [SELECT * FROM crm_describe('accounts')] | | crm_read | table | Read data from a Microsoft Dataverse entity with filter and predicate pushdown support. | NULL | [SELECT * FROM crm_read('accounts')] | | crm_show_entities | table | List all entity types available in Microsoft Dataverse (Dynamics 365 CRM). | NULL | [SELECT * FROM crm_show_entities()] | | datasphere_describe_asset | table | Describe the schema and metadata of a specific asset in a SAP Datasphere space. | NULL | [SELECT * FROM datasphere_describe_asset('MY_SPACE', 'MY_VIEW')] | | datasphere_describe_space | table | Describe the metadata and configuration of a SAP Datasphere space. | NULL | [SELECT * FROM datasphere_describe_space('MY_SPACE')] | | datasphere_read_analytical | table | Read data from an analytical (cube/view) asset in SAP Datasphere using space and asset ID. | NULL | [SELECT * FROM datasphere_read_analytical('MY_SPACE', 'MY_CUBE')] | | datasphere_read_analytical | table | Read data from an analytical asset in SAP Datasphere using space, asset ID, and explicit secret name. | NULL | [SELECT * FROM datasphere_read_analytical('MY_SPACE', 'MY_CUBE', 'my_secret')] | | datasphere_read_relational | table | Read data from a relational asset in SAP Datasphere using space and asset ID. | NULL | [SELECT * FROM datasphere_read_relational('MY_SPACE', 'MY_VIEW')] | | datasphere_read_relational | table | Read data from a relational asset in SAP Datasphere using space, asset ID, and explicit secret name. | NULL | [SELECT * FROM datasphere_read_relational('MY_SPACE', 'MY_VIEW', 'my_secret')] | | datasphere_show_assets | table | List all assets across all accessible SAP Datasphere spaces. | NULL | [SELECT * FROM datasphere_show_assets()] | | datasphere_show_assets | table | List all assets in a specific SAP Datasphere space. | NULL | [SELECT * FROM datasphere_show_assets('MY_SPACE')] | | datasphere_show_spaces | table | List all SAP Datasphere spaces accessible with the configured credentials. | NULL | [SELECT * FROM datasphere_show_spaces()] | | delta_share_scan | table | Read data from a Delta Sharing table using a profile file and share/schema/table path. | NULL | [SELECT * FROM delta_share_scan('/path/to/profile.json', 'my_share', 'my_schema', 'my_table')] | | delta_share_show_schemas | table | List all schemas within a Delta Sharing share. | NULL | [SELECT * FROM delta_share_show_schemas('/path/to/profile.json', 'my_share')] | | delta_share_show_shares | table | List all shares available in a Delta Sharing server using a profile file. | NULL | [SELECT * FROM delta_share_show_shares('/path/to/profile.json')] | | delta_share_show_tables | table | List all tables within a Delta Sharing schema. | NULL | [SELECT * FROM delta_share_show_tables('/path/to/profile.json', 'my_share', 'my_schema')] | | erpl_trace_directory | pragma | Sets the directory trace files are written to. | NULL | [PRAGMA erpl_trace_directory('/tmp/erpl_traces');] | | erpl_trace_enable | pragma | Turns request tracing on or off for the erpl_odata extension. Traces record the HTTP exchanges the extension makes, which is what you need to see when a remote service answers differently than expected. | NULL | [PRAGMA erpl_trace_enable(true);] | | erpl_trace_level | pragma | Sets how much detail tracing records: TRACE, DEBUG, INFO, WARN or ERROR. | NULL | [PRAGMA erpl_trace_level('DEBUG');] | | erpl_trace_status | pragma | Reports whether tracing is enabled, at what level, and where traces are being written. | NULL | [PRAGMA erpl_trace_status;] | | graph_calendar_events | table | List Outlook calendar events for a user via Microsoft Graph. Returns id, subject, body_preview, start_time, end_time, location, organizer_name, organizer_email, is_all_day, is_cancelled, web_link. Use start_date + end_date (ISO 8601 date or datetime) for a date-bounded calendarView query; omit both for all upcoming events. Use calendar_id to target a specific calendar instead of the default. | NULL | [SELECT * FROM graph_calendar_events(secret := 'ms_graph'), SELECT * FROM graph_calendar_events(start_date := '2024-01-01', end_date := '2024-12-31', secret := 'ms_graph'), SELECT * FROM graph_calendar_events(user := 'jr@contoso.com', calendar_id := 'calendar-guid', secret := 'ms_graph')] | | graph_calendars | table | List Outlook calendars for a user via Microsoft Graph. Returns id, name, color, is_default_calendar, can_edit. Omit user to query the authenticated user's calendars (delegated); provide user (GUID, UPN, or email) for app-only auth. | NULL | [SELECT * FROM graph_calendars(secret := 'ms_graph'), SELECT * FROM graph_calendars(user := 'jr@contoso.com', secret := 'ms_graph')] | | graph_channel_messages | table | List messages in a Microsoft Teams channel. Pages lazily through large message histories via @odata.nextLink. Both arguments accept a GUID/channel-ID or a human-readable displayName. | NULL | [SELECT * FROM graph_channel_messages('Engineering', 'General', secret := 'ms_graph'), SELECT * FROM graph_channel_messages('team-guid', '19:xxx@thread.tacv2', secret := 'ms_graph')] | | graph_contacts | table | List Outlook contacts for a user via Microsoft Graph. Returns id, display_name, email, phone, company, job_title. Omit user to query the authenticated user's contacts (delegated); provide user (GUID, UPN, or email) for app-only auth. | NULL | [SELECT * FROM graph_contacts(secret := 'ms_graph'), SELECT display_name, email FROM graph_contacts(user := 'jr@contoso.com', secret := 'ms_graph') WHERE company = 'Acme'] | | graph_describe_list | table | Describe the column schema of a SharePoint list. Returns column_name, column_type, is_required, is_hidden. Both arguments accept a GUID, display name, or site URL. Use this to discover field names before calling graph_sharepoint_create_item() or graph_sharepoint_update_item(). | NULL | [SELECT * FROM graph_describe_list('Finance', 'Budget', secret := 'ms_graph'), SELECT * FROM graph_describe_list('https://tenant.sharepoint.com/sites/Finance', 'Budget', secret := 'ms_graph')] | | graph_devices | table | List registered devices from Microsoft Entra ID (Azure Active Directory). | NULL | [SELECT * FROM graph_devices(secret := 'ms_entra')] | | graph_excel_add_rows | table | Append rows to a named table in a Microsoft Excel workbook. Returns rows_added. data is a JSON 2-D array where each inner array is one row in column order: '[[v1,v2,...],[v1,v2,...],...]'. Column order must match the table's column order (use graph_excel_tables() to verify). | NULL | [SELECT * FROM graph_excel_add_rows('report.xlsx', 'Sales', data := '[[1,"Alice",100.0],[2,"Bob",200.0]]', drive := 'https://tenant.sharepoint.com/Shared%20Documents', secret := 'ms_graph'), SELECT * FROM graph_excel_add_rows('report.xlsx', 'Sales', data := '[[1,"Alice"]]', site := 'Finance', drive := 'Documents', secret := 'ms_graph')] | | graph_excel_delete_rows | table | Delete all rows in an Excel table where a column value matches. Returns rows_deleted. col_value is always compared as a string; cast numeric IDs to VARCHAR if needed. The column is given by 0-based integer INDEX. | NULL | [SELECT * FROM graph_excel_delete_rows('report.xlsx', 'Sales', 0, 'obsolete_row', site := 'Finance', drive := 'Documents', secret := 'ms_graph')] | | graph_excel_delete_rows | table | Delete all rows in an Excel table where a column value matches. Returns rows_deleted. col_value is always compared as a string; cast numeric IDs to VARCHAR if needed. The column is given by NAME, resolved against the table header. | NULL | [SELECT * FROM graph_excel_delete_rows('report.xlsx', 'Sales', 'Region', 'North', drive := 'b!abc...', secret := 'ms_graph')] | | graph_excel_range | table | Read a cell range from a worksheet in a Microsoft Excel workbook. Returns dynamic columns named by the first header row. sheet_name must match exactly (use graph_excel_worksheets() to discover names). Optionally pass a range address as a third positional argument (e.g. 'A1:D100'); omit it to read the sheet's used range. The range is fetched once while the statement is bound, in order to infer the column types; re-executing a prepared statement replays that snapshot rather than re-reading the workbook. | NULL | [SELECT * FROM graph_excel_range('test.xlsx', 'Sheet1', drive := 'b!abc...', secret := 'ms_graph'), SELECT * FROM graph_excel_range('test.xlsx', 'Sheet1', drive := 'https://tenant.sharepoint.com/Shared%20Documents', secret := 'ms_graph'), SELECT * FROM graph_excel_range('test.xlsx', 'Sheet1', site := 'Finance', drive := 'Documents', secret := 'ms_graph')] | | graph_excel_read | table | Read all rows from a named table in a Microsoft Excel workbook. Returns dynamic columns matching the table's header row. table_name must match a name returned by graph_excel_tables(). Use graph_excel_tables() to discover available table names first. The rows are fetched once while the statement is bound, in order to infer the column types; re-executing a prepared statement replays that snapshot rather than re-reading the workbook. | NULL | [SELECT * FROM graph_excel_read('test.xlsx', 'SalesTable', drive := 'b!abc...', secret := 'ms_graph'), SELECT * FROM graph_excel_read('test.xlsx', 'SalesTable', drive := 'https://tenant.sharepoint.com/Shared%20Documents', secret := 'ms_graph'), SELECT * FROM graph_excel_read('test.xlsx', 'SalesTable', site := 'Finance', drive := 'Documents', secret := 'ms_graph')] | | graph_excel_tables | table | List all named tables in a Microsoft Excel workbook. Returns table_name, sheet_name, row_count, column_count. Use the returned table_name with graph_excel_read() to read table data. | NULL | [SELECT * FROM graph_excel_tables('test.xlsx', drive := 'b!abc...', secret := 'ms_graph'), SELECT * FROM graph_excel_tables('test.xlsx', drive := 'https://tenant.sharepoint.com/Shared%20Documents', secret := 'ms_graph'), SELECT * FROM graph_excel_tables('test.xlsx', site := 'Finance', drive := 'Documents', secret := 'ms_graph')] | | graph_excel_worksheets | table | List all worksheets in a Microsoft Excel workbook. Returns sheet_name, position, visibility. Use the returned sheet_name with graph_excel_range() to read a cell range. | NULL | [SELECT * FROM graph_excel_worksheets('test.xlsx', drive := 'b!abc...', secret := 'ms_graph'), SELECT * FROM graph_excel_worksheets('test.xlsx', drive := 'https://tenant.sharepoint.com/Shared%20Documents', secret := 'ms_graph'), SELECT * FROM graph_excel_worksheets('test.xlsx', site := 'Finance', drive := 'Documents', secret := 'ms_graph')] | | graph_groups | table | List groups from Microsoft Entra ID (Azure Active Directory). | NULL | [SELECT * FROM graph_groups(secret := 'ms_entra')] | | graph_my_teams | table | List Microsoft Teams for a user. Omit user to query the authenticated user's teams (delegated); provide user (GUID, UPN, or email) for app-only auth. | NULL | [SELECT * FROM graph_my_teams(secret := 'ms_graph'), SELECT * FROM graph_my_teams(user := 'jr@data-zoo.de', secret := 'ms_graph')] | | graph_outlook_emails | table | List Outlook email messages for a user via Microsoft Graph. Returns id, subject, sender_name, sender_email, received_datetime, body_preview, is_read, has_attachments, web_link. Use folder to filter by a well-known name ('inbox', 'sentitems', 'drafts', 'deleteditems') or any displayName from graph_outlook_mail_folders(). Pages lazily through large mailboxes. | NULL | [SELECT * FROM graph_outlook_emails(secret := 'ms_graph'), SELECT subject, sender_name, received_datetime FROM graph_outlook_emails(folder := 'inbox', secret := 'ms_graph') WHERE NOT is_read, SELECT * FROM graph_outlook_emails(user := 'jr@contoso.com', folder := 'sentitems', secret := 'ms_graph')] | | graph_outlook_mail_folders | table | List Outlook mail folders for a user via Microsoft Graph. Returns id, display_name, total_item_count, unread_item_count. Use the returned display_name or id as the folder parameter of graph_outlook_emails() to filter messages by folder. | NULL | [SELECT * FROM graph_outlook_mail_folders(secret := 'ms_graph'), SELECT display_name, unread_item_count FROM graph_outlook_mail_folders(user := 'jr@contoso.com', secret := 'ms_graph') ORDER BY unread_item_count DESC] | | graph_planner_buckets | table | List all buckets in a Microsoft Planner plan. | NULL | [SELECT * FROM graph_planner_buckets('plan-id-here', secret := 'ms_graph')] | | graph_planner_create_task | table | Create a Microsoft Planner task. Returns (task_id, task_url). Designed for use with lateral joins to bulk-create tasks from a query result. priority: 0-10 (1=urgent, 3=important, 5=medium, 9=low). assigned_to: single Graph user ID. due_date/start_date: ISO 8601 date or datetime string. | NULL | [-- Create a single task