Your canonical data lives in a database. RTM bridges it to every Excel workbook — automatically, securely, and without a DBA on speed dial.
RTM doesn't replace your data infrastructure — it completes it. A lightweight export pipeline publishes master data to SharePoint or OneDrive. RTM reads it directly inside Excel.
The wizard guides you from URL to live reference table. No manual copy-paste, no stale exports.
Your pipeline extracts from the source DB and writes a versioned JSON file to SharePoint or OneDrive. RTM reads it on demand.
What the pipeline does
The pipeline is thin by design. Its only job is to transform a query result into clean, flat JSON and upload it to the agreed SharePoint path. RTM handles everything from there.
cost-centres.json to SharePointSupported source systems
Anything Python can query. The examples use pyodbc for SQL Server, but the same pattern works for Oracle, PostgreSQL, BigQuery, Snowflake, SAP HANA, REST APIs, and more.
# ── Notebook: export_cost_centres.ipynb ────────────── import pyodbc, json, datetime from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.user_credential import UserCredential # 1. Query source DB ────────────────────────────────── conn = pyodbc.connect("DSN=FinanceDW;Trusted_Connection=yes") cursor = conn.cursor() cursor.execute("SELECT * FROM vw_CostCentres_RTM") cols = [c[0] for c in cursor.description] rows = [dict(zip(cols, row)) for row in cursor.fetchall()] # 2. Serialise ──────────────────────────────────────── payload = json.dumps(rows, default=str, indent=2) # 3. Upload to SharePoint ───────────────────────────── ctx = ClientContext("https://contoso.sharepoint.com/sites/Finance")\ .with_credentials(UserCredential(SP_USER, SP_PASS)) lib = ctx.web.get_folder_by_server_relative_url( "/sites/Finance/MasterData") lib.upload_file("cost-centres.json", payload.encode()).execute_query() # 4. Optional: dated snapshot for SCD Type 2 ───────── today = datetime.date.today().strftime("%Y-%m") lib.upload_file(f"cost-centres-{today}.json", payload.encode())\ .execute_query() print(f"✓ {len(rows)} rows published · snapshot: cost-centres-{today}.json")
Virtual reference tables aren't just read-only windows. They're enrichable, auditable, and formula-integrated.
/shares/{encoded}/driveItem/content.OfficeRuntime.storage, keyed by primary key — so it survives source refreshes. Orphaned rows are quarantined, not deleted.{"value":[...]} envelopes, and keyed dictionaries. Use the data root path (dot-notation) to drill into nested structures like response.items.