Eine saubere Quelle für Ihr ganzes Unternehmen.
Aus jedem System, das Sie nutzen.

In Shopify ist sie Kundin, in Business Central Debitorin, und insgesamt steht sie dreimal drin. Der Agent von beetl schreibt das SQL, das diese Datensätze abgleicht, zusammenführt und bereinigt, und ein Mensch gibt es frei, bevor etwas läuft.

Fragen Sie nach dem Ergebnis.
Der Agent baut die Pipeline.

Beschreiben Sie in eigenen Worten, was Sie brauchen. Der Agent findet die Quellen, prüft die Regeln Ihres Workspace, validiert das SQL an Ihren Daten und speichert die Pipeline als Entwurf. Nichts läuft, bevor jemand sie freigibt.

Ask anything about your workspace…

Folgen Sie einer Kundin hindurch.
Jeder Schritt ist lesbares SQL.

Vier Stufen, jede eine SQL-Abfrage, die auf der vorigen aufbaut. Scrollen Sie, und sehen Sie zu, wie aus drei Datensätzen von Anna Huber in zwei Systemen eine Zeile wird.

Gleiche Form, beide Systeme

Bereinigte E-Mails in Kleinbuchstaben und ordentliche Namen, damit dieselbe Person überall gleich aussieht.

1normalized
SELECT  'shopify' AS source, id AS source_id,  lower(trim(email)) AS email,  initcap(trim(first_name || ' ' || last_name)) AS name,  updated_atFROM shopify.customersUNION ALLSELECT  'business_central', no, lower(trim(e_mail)), initcap(trim(name)), last_modifiedFROM business_central.customers

Puts both systems in one shape: trimmed, lower-case emails and tidy names.

Preview · 3 of 1,904 rows182ms
sourceUtf8source_idUtf8emailUtf8nameUtf8
shopify4410anna@huber.atAnna Huber
shopify4471anna@huber.atAnna Huber
business_centralD10023anna@huber.atHuber Anna

Eine Zeile pro Kunde

Datensätze mit gleicher E-Mail werden eins. Der neueste Name gewinnt, jede Quell-ID bleibt erhalten.

2matched
SELECT  email,  first_value(name ORDER BY updated_at DESC) AS name,  array_agg(source || ':' || source_id) AS sourcesFROM normalizedGROUP BY email

One row per email. The newest name wins; every source ID is kept.

Preview · 2 of 1,613 rows214ms
emailUtf8nameUtf8sourcesList(Utf8)
anna@huber.atAnna Huber[business_central:D10023, shopify:4410, shopify:4471]
qa@test.exampleTest Order[shopify:4999]

Fehlerhafte Zeilen kommen beiseite

Testbestellungen und Datensätze ohne E-Mail werden getrennt gehalten, sichtbar und zählbar, nicht gelöscht.

3quarantined
SELECT * FROM matchedWHERE email IS NULL OR email LIKE '%@test.%'

Test orders and rows without an email, kept apart instead of deleted.

Preview · 1 of 1 rows97ms
emailUtf8nameUtf8sourcesList(Utf8)
qa@test.exampleTest Order[shopify:4999]

Die Tabelle, die das Unternehmen liest

Eine stabile ID, die E-Mail für Analysen maskiert und die Datensätze, aus denen sie stammt. Dashboards, Chat und Exporte lesen genau das.

4customers_unified
SELECT  md5(email) AS customer_id,  name,  regexp_replace(email, '^(.)[^@]*@', '${1}***@') AS email_masked,  sourcesFROM matchedWHERE email IS NOT NULL AND email NOT LIKE '%@test.%'

Stable ID, masked email and sources. The table the business reads.

Preview · 1 of 1,612 rows203ms
customer_idUtf8nameUtf8email_maskedUtf8sourcesList(Utf8)
28b30203406926b77de424cdf2b15ca6Anna Hubera***@huber.at[business_central:D10023, shopify:4410, shopify:4471]

Nichts geht aus Versehen live.
Arbeitsversion und Freigabe sind getrennt.

Der Agent und Ihr Team bearbeiten die Arbeitsversion. Was läuft, ist die freigegebene, und die ändert sich nur, wenn ein Mensch freigibt. Jede Änderung ist ein lesbarer Diff.

stage matcheddeployed v3 → working v4

SELECT

email,

- max(name) AS name,

+ first_value(name ORDER BY updated_at DESC) AS name,

array_agg(source || ':' || source_id) AS sources

FROM normalized

GROUP BY email

customers_unified

Working v4 · Deployed v3

v4 freigeben

Ersetzt v3. Läuft, sobald sich shopify.customers oder business_central.customers ändern.

  • Es ist übertragbar. Eine neue Engineerin liest eine SQL-Stufe am ersten Tag. Ein proprietäres Mapping-Tool muss man erst lernen, bevor man es beurteilen kann.
  • Es ist vergleichbar. Weil jede Stufe Text ist, zeigt eine Änderung genau, was sich zwischen freigegebener und nächster Version bewegt.
  • Es bleibt Ihres. Sollten wir uns trennen, behalten Sie Definitionen dessen, was Ihre Daten bedeuten, in einer Sprache, die Ihr Team schon liest.

Spezialisierte Apps kommen als Nächstes.

Fertige Apps für Deduplizierung, Abgleich, Identitätszuordnung und Schwärzung sind unterwegs. Bis dahin schreibt der Agent diese Regeln als SQL, und sie bleiben für Sie lesbar und änderbar.

  • DeduplizierungGeplant
  • AbgleichGeplant
  • IdentitätszuordnungGeplant
  • SchwärzungGeplant

Erzählen Sie uns, wasIhr Team erledigen muss.

Eine grobe Beschreibung der Aufgabe reicht für den Anfang. Den Umfang und wer sich danach darum kümmert, vereinbaren wir gemeinsam mit Ihnen.