spxlsx

SharePoint-Listen und Excel-Arbeitsmappen direkt aus DuckDB abfragen

Maintainer: paulmupeters

Installation und Laden

INSTALL spxlsx FROM community;
LOAD spxlsx;

Beispiel

LOAD spxlsx;
-- Authenticate with SharePoint using the built-in OAuth device flow
CREATE SECRET (TYPE sharepoint, PROVIDER oauth);
-- Read rows from a SharePoint list
SELECT ID, Title, Created
FROM read_sharepoint_list(
'https://contoso.sharepoint.com/sites/MyTeam/Lists/Projects',
top := 10
);
-- Read an Excel workbook stored in SharePoint
SELECT *
FROM read_sharepoint_excel(
'https://contoso.sharepoint.com/sites/Finance/Documents/Budget2024.xlsx',
sheet := 'Q1 Data'
)
LIMIT 10;
-- Download an Excel workbook stored in SharePoint
SELECT sharepoint_download_excel(
'https://contoso.sharepoint.com/sites/Finance/Documents/Report.xlsx'
);

Über spxlsx

spxlsx ist eine DuckDB-Erweiterung zum direkten Abfragen von Microsoft-SharePoint-Daten aus SQL. Sie nutzt die Microsoft Graph API für Authentifizierung und Datenzugriff. Die Erweiterung setzt auf DuckDBs Erweiterung excel zum Lesen von Excel-Arbeitsmappen. Beim Lesen von in SharePoint gehosteten Excel-Arbeitsmappen muss die Erweiterung excel daher installiert sein.

Repository: https://github.com/paulmupeters/spxlsx

Kernfunktionen

  • Tabellenfunktion read_sharepoint_list(url, filter := ..., top := ...) für SharePoint-Listen
  • Tabellenmakro read_sharepoint_excel(url, ...), das eine in SharePoint gehostete Excel-Arbeitsmappe liest
  • Skalarfunktion sharepoint_download_excel(url), die eine in SharePoint gehostete Arbeitsmappe in eine temporäre lokale Datei herunterlädt
  • SharePoint-Authentifizierung über DuckDB-Secrets mit PROVIDER oauth oder PROVIDER token
  • Automatischer Versuch, DuckDBs Erweiterung excel zu laden, wenn LOAD spxlsx ausgeführt wird

Authentifizierung

Die Erweiterung registriert einen eigenen SharePoint-Secret-Typ. Interaktive Authentifizierung:

CREATE SECRET (TYPE sharepoint, PROVIDER oauth);

Oder durch Angabe eines vorhandenen Zugriffstokens:

CREATE SECRET (TYPE sharepoint, PROVIDER token, TOKEN 'your-access-token');

Persistente Secrets werden ebenfalls unterstützt:

CREATE PERSISTENT SECRET (TYPE sharepoint, PROVIDER oauth);

SharePoint-Listen abfragen

SharePoint-Listenelemente als DuckDB-Tabelle lesen:

SELECT *
FROM read_sharepoint_list('https://contoso.sharepoint.com/sites/MyTeam/Lists/Projects');

Optionale Pushdown-artige Parameter:

SELECT ID, Title, Created
FROM read_sharepoint_list(
'https://contoso.sharepoint.com/sites/MyTeam/Lists/Projects',
filter := 'Status eq ''Active''',
top := 100
)
ORDER BY Created DESC;

SharePoint-Spaltentypen werden zur Bind-Zeit anhand der Listenmetadaten auf DuckDB-Typen abgebildet; komplexe Lookup-/Personenfelder erscheinen als Zeichenketten.

In SharePoint gespeicherte Excel-Dateien abfragen

Der schnelle Weg ist das eingebaute Makro read_sharepoint_excel(...):

SELECT *
FROM read_sharepoint_excel(
'https://contoso.sharepoint.com/sites/Finance/Documents/Budget2024.xlsx',
sheet := 'Q1 Data',
header := true,
ignore_errors := true
);

Unterstützte Parameter spiegeln gängige Optionen von read_xlsx(...):

  • sheet
  • header
  • all_varchar
  • ignore_errors
  • range
  • stop_at_empty
  • empty_as_varchar

Für fortgeschrittenere Excel-Workflows nutzen Sie den Download-Helfer direkt mit read_xlsx(...):

SELECT *
FROM read_xlsx(
(SELECT sharepoint_download_excel(
'https://contoso.sharepoint.com/sites/Finance/Documents/Report.xlsx'
)),
sheet := 'Summary',
range := 'A1:F100'
);

Hinweise

Diese Erweiterung ist derzeit experimentell und noch nicht produktionserprobt. Sie soll SharePoint-Listendaten und in SharePoint gehostete Excel-Arbeitsmappen zu erstklassigen Abfragequellen in DuckDB machen, insbesondere für Ad-hoc-Analysen und schlanke Integrationsabläufe.

Hinzugefügte Funktionen

function_name function_type description comment examples
__sharepoint_require_excel scalar NULL NULL
read_sharepoint table NULL NULL
read_sharepoint_excel table_macro NULL NULL
read_sharepoint_list table NULL NULL
sharepoint_download_excel scalar NULL NULL

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

Diese Erweiterung fügt keine Typen hinzu.

Hinzugefügte Einstellungen

Diese Erweiterung fügt keine Einstellungen hinzu.