[{"data":1,"prerenderedAt":708},["ShallowReactive",2],{"footer-compare-de":3,"dynamicForm-newsletter-de":24,"mdc--4uzlmi-key":55,"\u002Fde\u002Farchitecture\u002Fdata-layer-de":77},[4,8,12,16,20],{"path":5,"competitorName":6,"title":7},"\u002Fmake","Make","dataflows vs Make",{"path":9,"competitorName":10,"title":11},"\u002Fpipedream","Pipedream","dataflows vs Pipedream",{"path":13,"competitorName":14,"title":15},"\u002Fpower-automate","Power Automate","dataflows vs Power Automate",{"path":17,"competitorName":18,"title":19},"\u002Fzapier","Zapier","dataflows vs Zapier",{"path":21,"competitorName":22,"title":23},"\u002Fn8n","n8n","dataflows vs n8n",{"id":25,"title":26,"apiEndpoint":27,"body":28,"description":28,"extension":29,"fields":30,"mail":43,"meta":46,"navigation":35,"path":47,"seo":48,"stem":49,"submitButtonLabel":50,"successMsg":51,"__hash__":54},"forms_de\u002Fnewsletter.yml","Newsletter","\u002Fapi\u002FdynamicFormsInbox",null,"yml",[31,38],{"name":32,"type":32,"label":33,"placeholder":34,"required":35,"validationError":36,"width":37},"email","E-Mail","deine@email.de",true,"Bitte gib eine gültige E-Mail-Adresse an","full",{"name":39,"type":40,"label":41,"required":35,"validationError":42,"width":37},"privacy","checkbox","Ich stimme der [Datenschutzerklärung](\u002Fde\u002Fprivacy) zu","Bitte stimme der Datenschutzerklärung zu",{"to":44,"subject":45},"info@nbrx.com","Neues Newsletter-Abo",{},"\u002Fnewsletter",{"title":26},"newsletter","Abonnieren",{"title":52,"description":53},"Fast geschafft","Wir haben dir eine Bestätigungs-E-Mail geschickt – bitte schau kurz rein.","revae07UJt6EZkkQ6uf8RmCpu7w1TTPocdQKkKUB2LQ",{"data":56,"body":57},{},{"type":58,"children":59},"root",[60],{"type":61,"tag":62,"props":63,"children":64},"element","p",{},[65,68,75],{"type":66,"value":67},"text","Ich stimme der ",{"type":61,"tag":69,"props":70,"children":72},"a",{"href":71},"\u002Fde\u002Fprivacy",[73],{"type":66,"value":74},"Datenschutzerklärung",{"type":66,"value":76}," zu",{"id":78,"title":79,"body":80,"description":698,"extension":699,"icon":700,"meta":701,"navigation":35,"path":702,"seo":703,"stem":706,"__hash__":707},"architecture_de\u002Fdata-layer.md","Datenschicht & Warehouse",{"type":81,"value":82,"toc":682},"minimark",[83,88,91,95,98,108,111,134,141,144,164,171,174,200,204,207,620,623,627,630,634,637,651,655,658,678],[84,85,87],"h2",{"id":86},"das-data-warehouse","Das Data-Warehouse",[62,89,90],{},"Anders als andere Workflow-Engines, die rein ephemer sind, baut dataflows einen persistenten „Kontext“ aus deinen Unternehmensdaten auf. Das ermöglicht historische Auswertungen, Time-Travel-Debugging und echten Kontext für KI.",[84,92,94],{"id":93},"core-schema","Core-Schema",[62,96,97],{},"Das Core-Schema ist flexibel gedacht, aber strikt da, wo es zählt.",[99,100,102,103,107],"h3",{"id":101},"service-clients-service_clients","Service-Clients (",[104,105,106],"code",{},"service_clients",")",[62,109,110],{},"Verwaltet die Identität externer Systeme.",[112,113,114,122,128],"ul",{},[115,116,117,121],"li",{},[118,119,120],"strong",{},"Auth-Typen",": OAuth2, API Key, Basic Auth.",[115,123,124,127],{},[118,125,126],{},"Security-Schema",": Mappt auf OpenAPI-Security-Definitionen.",[115,129,130,133],{},[118,131,132],{},"Scopes",": Definiert, welche Berechtigungen der Client hat.",[99,135,137,138,107],{"id":136},"connections-connections","Connections (",[104,139,140],{},"connections",[62,142,143],{},"Speichert die tatsächlichen Credentials (Tokens), die einen User oder Account mit einem Service-Client verbinden.",[112,145,146,152,158],{},[115,147,148,151],{},[118,149,150],{},"Token-Management",": Verwaltet Access- und Refresh-Tokens automatisch.",[115,153,154,157],{},[118,155,156],{},"User-Info",": Cached Profildaten vom Provider.",[115,159,160,163],{},[118,161,162],{},"Verschlüsselung",": Alle sensiblen Tokens sind at rest verschlüsselt.",[99,165,167,168,107],{"id":166},"executions-executions","Executions (",[104,169,170],{},"executions",[62,172,173],{},"Das Audit-Log von allem, was im System passiert.",[112,175,176,182,188,194],{},[115,177,178,181],{},[118,179,180],{},"Payload",": Die kompletten Event-Daten, die den Workflow ausgelöst haben.",[115,183,184,187],{},[118,185,186],{},"Result",": Der finale Output des Workflows.",[115,189,190,193],{},[118,191,192],{},"Status",": Running, Success, Error.",[115,195,196,199],{},[118,197,198],{},"Timing",": Präzise Start- und Completion-Timestamps.",[84,201,203],{"id":202},"daten-synchronisation","Daten-Synchronisation",[62,205,206],{},"dataflows ist darauf ausgelegt, Daten aus externen Systemen in die eigenen Warehouse-Tabellen zu synchronisieren.",[208,209,214],"pre",{"className":210,"code":211,"language":212,"meta":213,"style":213},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Beispiel: ClickUp-Tasks ins lokale Warehouse synchronisieren\nexport const syncClickUpTask = defineWorkflow({\n  id: 'sync-clickup-task',\n  trigger: clickup.onTaskUpdated(),\n\n  async run({ event, step }) {\n    const task = event.payload\n\n    \u002F\u002F Jedes Upsert ist ein durabler Schritt – bei Fehler wiederholt,\n    \u002F\u002F beim Replay übersprungen, falls bereits erfolgreich.\n    const project = await step.run('upsert-project', () =>\n      db.projects.upsert({\n        clickup_id: task.project.id,\n        name: task.project.name\n      })\n    )\n\n    await step.run('upsert-task', () =>\n      db.tasks.upsert({\n        clickup_id: task.id,\n        project_id: project.id,\n        name: task.name,\n        status: task.status\n      })\n    )\n  }\n})\n","typescript","",[104,215,216,225,254,277,299,305,333,352,357,363,369,406,426,448,467,476,482,487,514,532,547,563,579,594,601,606,612],{"__ignoreMap":213},[217,218,221],"span",{"class":219,"line":220},"line",1,[217,222,224],{"class":223},"sHwdD","\u002F\u002F Beispiel: ClickUp-Tasks ins lokale Warehouse synchronisieren\n",[217,226,228,232,236,240,244,248,251],{"class":219,"line":227},2,[217,229,231],{"class":230},"s7zQu","export",[217,233,235],{"class":234},"spNyl"," const",[217,237,239],{"class":238},"sTEyZ"," syncClickUpTask ",[217,241,243],{"class":242},"sMK4o","=",[217,245,247],{"class":246},"s2Zo4"," defineWorkflow",[217,249,250],{"class":238},"(",[217,252,253],{"class":242},"{\n",[217,255,257,261,264,267,271,274],{"class":219,"line":256},3,[217,258,260],{"class":259},"swJcz","  id",[217,262,263],{"class":242},":",[217,265,266],{"class":242}," '",[217,268,270],{"class":269},"sfazB","sync-clickup-task",[217,272,273],{"class":242},"'",[217,275,276],{"class":242},",\n",[217,278,280,283,285,288,291,294,297],{"class":219,"line":279},4,[217,281,282],{"class":259},"  trigger",[217,284,263],{"class":242},[217,286,287],{"class":238}," clickup",[217,289,290],{"class":242},".",[217,292,293],{"class":246},"onTaskUpdated",[217,295,296],{"class":238},"()",[217,298,276],{"class":242},[217,300,302],{"class":219,"line":301},5,[217,303,304],{"emptyLinePlaceholder":35},"\n",[217,306,308,311,314,317,321,324,327,330],{"class":219,"line":307},6,[217,309,310],{"class":234},"  async",[217,312,313],{"class":259}," run",[217,315,316],{"class":242},"({",[217,318,320],{"class":319},"sHdIc"," event",[217,322,323],{"class":242},",",[217,325,326],{"class":319}," step",[217,328,329],{"class":242}," })",[217,331,332],{"class":242}," {\n",[217,334,336,339,342,345,347,349],{"class":219,"line":335},7,[217,337,338],{"class":234},"    const",[217,340,341],{"class":238}," task",[217,343,344],{"class":242}," =",[217,346,320],{"class":238},[217,348,290],{"class":242},[217,350,351],{"class":238},"payload\n",[217,353,355],{"class":219,"line":354},8,[217,356,304],{"emptyLinePlaceholder":35},[217,358,360],{"class":219,"line":359},9,[217,361,362],{"class":223},"    \u002F\u002F Jedes Upsert ist ein durabler Schritt – bei Fehler wiederholt,\n",[217,364,366],{"class":219,"line":365},10,[217,367,368],{"class":223},"    \u002F\u002F beim Replay übersprungen, falls bereits erfolgreich.\n",[217,370,372,374,377,379,382,384,386,389,391,393,396,398,400,403],{"class":219,"line":371},11,[217,373,338],{"class":234},[217,375,376],{"class":238}," project",[217,378,344],{"class":242},[217,380,381],{"class":230}," await",[217,383,326],{"class":238},[217,385,290],{"class":242},[217,387,388],{"class":246},"run",[217,390,250],{"class":259},[217,392,273],{"class":242},[217,394,395],{"class":269},"upsert-project",[217,397,273],{"class":242},[217,399,323],{"class":242},[217,401,402],{"class":242}," ()",[217,404,405],{"class":234}," =>\n",[217,407,409,412,414,417,419,422,424],{"class":219,"line":408},12,[217,410,411],{"class":238},"      db",[217,413,290],{"class":242},[217,415,416],{"class":238},"projects",[217,418,290],{"class":242},[217,420,421],{"class":246},"upsert",[217,423,250],{"class":259},[217,425,253],{"class":242},[217,427,429,432,434,436,438,441,443,446],{"class":219,"line":428},13,[217,430,431],{"class":259},"        clickup_id",[217,433,263],{"class":242},[217,435,341],{"class":238},[217,437,290],{"class":242},[217,439,440],{"class":238},"project",[217,442,290],{"class":242},[217,444,445],{"class":238},"id",[217,447,276],{"class":242},[217,449,451,454,456,458,460,462,464],{"class":219,"line":450},14,[217,452,453],{"class":259},"        name",[217,455,263],{"class":242},[217,457,341],{"class":238},[217,459,290],{"class":242},[217,461,440],{"class":238},[217,463,290],{"class":242},[217,465,466],{"class":238},"name\n",[217,468,470,473],{"class":219,"line":469},15,[217,471,472],{"class":242},"      }",[217,474,475],{"class":259},")\n",[217,477,479],{"class":219,"line":478},16,[217,480,481],{"class":259},"    )\n",[217,483,485],{"class":219,"line":484},17,[217,486,304],{"emptyLinePlaceholder":35},[217,488,490,493,495,497,499,501,503,506,508,510,512],{"class":219,"line":489},18,[217,491,492],{"class":230},"    await",[217,494,326],{"class":238},[217,496,290],{"class":242},[217,498,388],{"class":246},[217,500,250],{"class":259},[217,502,273],{"class":242},[217,504,505],{"class":269},"upsert-task",[217,507,273],{"class":242},[217,509,323],{"class":242},[217,511,402],{"class":242},[217,513,405],{"class":234},[217,515,517,519,521,524,526,528,530],{"class":219,"line":516},19,[217,518,411],{"class":238},[217,520,290],{"class":242},[217,522,523],{"class":238},"tasks",[217,525,290],{"class":242},[217,527,421],{"class":246},[217,529,250],{"class":259},[217,531,253],{"class":242},[217,533,535,537,539,541,543,545],{"class":219,"line":534},20,[217,536,431],{"class":259},[217,538,263],{"class":242},[217,540,341],{"class":238},[217,542,290],{"class":242},[217,544,445],{"class":238},[217,546,276],{"class":242},[217,548,550,553,555,557,559,561],{"class":219,"line":549},21,[217,551,552],{"class":259},"        project_id",[217,554,263],{"class":242},[217,556,376],{"class":238},[217,558,290],{"class":242},[217,560,445],{"class":238},[217,562,276],{"class":242},[217,564,566,568,570,572,574,577],{"class":219,"line":565},22,[217,567,453],{"class":259},[217,569,263],{"class":242},[217,571,341],{"class":238},[217,573,290],{"class":242},[217,575,576],{"class":238},"name",[217,578,276],{"class":242},[217,580,582,585,587,589,591],{"class":219,"line":581},23,[217,583,584],{"class":259},"        status",[217,586,263],{"class":242},[217,588,341],{"class":238},[217,590,290],{"class":242},[217,592,593],{"class":238},"status\n",[217,595,597,599],{"class":219,"line":596},24,[217,598,472],{"class":242},[217,600,475],{"class":259},[217,602,604],{"class":219,"line":603},25,[217,605,481],{"class":259},[217,607,609],{"class":219,"line":608},26,[217,610,611],{"class":242},"  }\n",[217,613,615,618],{"class":219,"line":614},27,[217,616,617],{"class":242},"}",[217,619,475],{"class":238},[62,621,622],{},"So kannst du deine Daten mit Standard-SQL abfragen – auch wenn die Quell-API gerade langsam oder down ist.",[84,624,626],{"id":625},"analytics-bi-readiness","Analytics & BI-Readiness",[62,628,629],{},"Die eigentliche Stärke des dataflows-Warehouses: Es verwandelt rohe API-Daten in handlungsleitende Business-Intelligence.",[99,631,633],{"id":632},"reporting-views","Reporting-Views",[62,635,636],{},"Wir kippen nicht nur JSON in die Datenbank. Wir erstellen strukturierte SQL-Views, die Daten über verschiedene Services hinweg verknüpfen.",[112,638,639,645],{},[115,640,641,644],{},[118,642,643],{},"Unified Customer View",": Stripe-Zahlungen mit HubSpot-Kontakten verknüpft.",[115,646,647,650],{},[118,648,649],{},"Projekt-Profitabilität",": ClickUp-Zeiteinträge mit Xero-Rechnungen verknüpft.",[99,652,654],{"id":653},"visualisierung","Visualisierung",[62,656,657],{},"Weil die Daten in Standard-PostgreSQL liegen, kannst du jedes Visualisierungs-Tool anbinden:",[112,659,660,666,672],{},[115,661,662,665],{},[118,663,664],{},"Interne Dashboards",": Custom-Nuxt-UI-Dashboards direkt in der dataflows-App bauen.",[115,667,668,671],{},[118,669,670],{},"BI-Tools",": PowerBI, Tableau oder Metabase direkt mit dem Warehouse verbinden.",[115,673,674,677],{},[118,675,676],{},"KI-Kontext",": Diese strukturierten Daten dienen als „Long-Term-Memory“ für deine KI-Agenten und ermöglichen Antworten wie „Welche Projekte waren letzten Monat über Budget?“",[679,680,681],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":213,"searchDepth":227,"depth":227,"links":683},[684,685,693,694],{"id":86,"depth":227,"text":87},{"id":93,"depth":227,"text":94,"children":686},[687,689,691],{"id":101,"depth":256,"text":688},"Service-Clients (service_clients)",{"id":136,"depth":256,"text":690},"Connections (connections)",{"id":166,"depth":256,"text":692},"Executions (executions)",{"id":202,"depth":227,"text":203},{"id":625,"depth":227,"text":626,"children":695},[696,697],{"id":632,"depth":256,"text":633},{"id":653,"depth":256,"text":654},"Das Schema, das den dataflows-Kontext trägt.","md","i-lucide-database",{},"\u002Fdata-layer",{"title":704,"description":705},"Datenschicht-Architektur","So ist das dataflows-Datenbank-Schema und Warehouse aufgebaut.","data-layer","vnkILB9s7fHBYqowozYzOGIIyXQ7B0asyGNks_5M0KU",1776797949772]