[{"data":1,"prerenderedAt":1056},["ShallowReactive",2],{"doc:\u002Fdocs\u002Fcapabilities\u002Fpreview-and-analysis":3,"docs-nav":839},{"id":4,"title":5,"body":6,"description":830,"extension":831,"meta":832,"navigation":834,"path":835,"seo":836,"stem":837,"__hash__":838},"docs\u002Fdocs\u002Fcapabilities\u002Fpreview-and-analysis.md","Preview and analysis",{"type":7,"value":8,"toc":813},"minimark",[9,13,22,27,167,171,182,189,195,214,241,246,302,308,316,321,325,328,368,371,375,382,386,400,456,462,491,495,512,516,550,636,642,648,659,663,721,728,732,772,776],[10,11,5],"h1",{"id":12},"preview-and-analysis",[14,15,16,17,21],"p",{},"Tabularia shows the data at every step: click a node of a flow and its result appears\nunder the canvas, as a table or as a chart. The ",[18,19,20],"strong",{},"Viewer"," does the same on any\ndatasource without building a flow: filters, computed fields, a pivot and charts,\ncomputed by the engine on the whole table, and saved as a named view that anyone with\naccess to the folder can reopen. Nothing in either place changes the data.",[23,24,26],"h2",{"id":25},"at-a-glance","At a glance",[28,29,30,44],"table",{},[31,32,33],"thead",{},[34,35,36,39,42],"tr",{},[37,38],"th",{},[37,40,41],{},"Flow editor",[37,43,20],{},[45,46,47,73,84,95,106,117,137,152],"tbody",{},[34,48,49,53,64],{},[50,51,52],"td",{},"Where",[50,54,55,56,59,60,63],{},"The data view under the canvas: ",[18,57,58],{},"Table"," and ",[18,61,62],{},"Chart"," tabs",[50,65,66,69,70],{},[18,67,68],{},"Analysis → Viewer"," in the navigation, or a saved view opened from ",[18,71,72],{},"Explore",[34,74,75,78,81],{},[50,76,77],{},"Reads",[50,79,80],{},"The chain up to the selected node",[50,82,83],{},"One datasource",[34,85,86,89,92],{},[50,87,88],{},"Rows shown",[50,90,91],{},"First 100 of the selected node",[50,93,94],{},"First 500 of the result",[34,96,97,100,103],{},[50,98,99],{},"Computed on",[50,101,102],{},"The whole input, or the source's development sample",[50,104,105],{},"The whole datasource",[34,107,108,111,114],{},[50,109,110],{},"Charts",[50,112,113],{},"Bars, Lines, Area, Pie, Treemap, Scatter, Bars and line, Waterfall, Funnel, Heatmap, KPI, Gauge, Bullet, aggregated on all rows",[50,115,116],{},"The same",[34,118,119,122,128],{},[50,120,121],{},"Download",[50,123,124,127],{},[18,125,126],{},"Download this node's data",": CSV or Excel",[50,129,130,59,133,136],{},[18,131,132],{},"Export CSV",[18,134,135],{},"Export Excel"," of the current view",[34,138,139,142,145],{},[50,140,141],{},"Kept",[50,143,144],{},"With the flow",[50,146,147,148,151],{},"As a ",[18,149,150],{},"saved view"," in a folder",[34,153,154,157,160],{},[50,155,156],{},"Step cache",[50,158,159],{},"Yes",[50,161,162,163,166],{},"No: every ",[18,164,165],{},"Apply"," reads the datasource",[23,168,170],{"id":169},"previewing-each-step-of-a-flow","Previewing each step of a flow",[14,172,173,174,176,177,181],{},"Clicking a node runs the chain that leads to it and shows its first 100 rows, with the\ncolumn types, in the ",[18,175,58],{}," tab. The count above the table says how many rows came\nback and whether there are more («100 rows (truncated)»); the node keeps the same count\n(«100+ rows · 12 columns») so you can read the shape of a flow at a glance. Values are\nshown raw, nulls as ",[178,179,180],"code",{},"∅",". A node that is not configured yet asks to be set, instead of\nshowing an error.",[14,183,184],{},[185,186],"img",{"alt":187,"src":188},"Clicking the nodes of the sample flow one after another: the table under the canvas changes to each step's result","\u002Fmedia\u002Fguide\u002Fflows\u002Fpreview-any-step.gif",[14,190,191],{},[192,193,194],"em",{},"Each click shows that step's first 100 rows: the order lines, the computed revenue, the join with the orders, the margin by category and month.",[14,196,197,198,201,202,205,206,209,210,213],{},"The rows are computed on the ",[18,199,200],{},"whole input",": a Group by groups every row, a Join joins\nevery row, and you see the first 100 of the result. The one exception is a source with a\n",[18,203,204],{},"Development sample"," (first N rows or a random percentage), which previews and editor\nruns read instead of the full table. An administrator can give every source an\nautomatic sample with ",[178,207,208],{},"PREVIEW__DEFAULT_SAMPLE_ROWS"," (0 by default: no sample); the\nsource node then shows «automatic (first N rows)» and anyone can switch it to «off (all\nrows)». Scheduled runs and ",[18,211,212],{},"Run in production"," always read everything.",[14,215,216,217,219,220,223,224,227,228,227,231,227,234,227,237,240],{},"The ",[18,218,62],{}," tab draws the selected node. The chart is an aggregation the engine\ncomputes on all the node's rows, not on the 100 shown: choose the kind (",[18,221,222],{},"Bars",",\n",[18,225,226],{},"Lines",", ",[18,229,230],{},"Area",[18,232,233],{},"Pie",[18,235,236],{},"Treemap",[18,238,239],{},"Scatter","), the column for the X axis, an\noptional column that splits it into series, and a function: count, sum, average,\nminimum, maximum, median or distinct count. Bars keep the top N categories (20 by\ndefault), a treemap the top N too; a pie shows the five largest and, for a count or a\nsum, gathers every other category of the data under «Other». A pie, a treemap and a\nfunnel draw only what is above zero: they say how many categories they leave out, and\nwith nothing above zero they say so instead of drawing. At most five series are drawn,\nand the chart says how many it left out. A scatter plots one point per group, with an aggregation on each axis.",[242,243,245],"h3",{"id":244},"more-chart-kinds","More chart kinds",[14,247,248,249,252,253,256,257,260,261,264,265,268,269,272,273,276,277,280,281,227,284,287,288,291,292,295,296,301],{},"After the first six, the row of chart kinds has two more groups. The first composes:\n",[18,250,251],{},"Bars and line"," (a second measure drawn as a line over the bars), ",[18,254,255],{},"Waterfall"," (how\neach category adds to or takes from the total, which comes last), ",[18,258,259],{},"Funnel"," (stages from\nthe largest down) and ",[18,262,263],{},"Heatmap"," (X by a second column, ",[18,266,267],{},"by",", the colour by the\nvalue). The second shows one number: ",[18,270,271],{},"KPI"," (the aggregate of the whole table in large\ntype; with ",[18,274,275],{},"trend",", a column such as a month, its sparkline and the change of the last\nperiod against the one before), ",[18,278,279],{},"Gauge"," (the number on an arc, with ",[18,282,283],{},"min",[18,285,286],{},"max","\nand a ",[18,289,290],{},"target",") and ",[18,293,294],{},"Bullet"," (a bar per category against a second measure, its\ntarget). They are computed on all rows like the others, look as they do in the\n",[297,298,300],"a",{"href":299},"\u002Fdocs\u002Fcapabilities\u002Freports#charts-and-kpis","pixel-perfect reports",", and the assistant draws them in its\nanswers too.",[14,303,304],{},[185,305],{"alt":306,"src":307},"The Viewer on Margin by Category and Month with the Gauge chart: the average of margine_pct, 28.57, on an arc from 0 to 50 with a target mark at 30, «Target 30 · 95.2%» under it; the row of chart kinds above, in three groups","\u002Fmedia\u002Fguide\u002Fanalysis\u002Fviewer-gauge.png",[14,309,310],{},[192,311,312,313,315],{},"The Viewer with ",[18,314,279],{},": the average margin percentage of the sample data against a target of 30; the row of kinds above, the first six, those that compose, those of one number.",[14,317,318,320],{},[18,319,126],{},", in the node's panel, writes the node's whole result as\nCSV or Excel: a worker writes the file and the browser saves it.",[23,322,324],{"id":323},"the-step-cache","The step cache",[14,326,327],{},"Every step's result is stored under a key made from its source and its operations.\nPreviewing node 9 after node 8 reuses node 8's result instead of starting from the\nsource again, and changing the last step of a long flow recomputes one step, not all of\nthem.",[329,330,331,338,344,354],"ul",{},[332,333,334,337],"li",{},[18,335,336],{},"The copy never delays the answer."," The preview answers first; the step's result is\nwritten afterwards by a separate, low-priority task.",[332,339,340,343],{},[18,341,342],{},"The editor shows what is cached."," A node whose result is in the cache has a ring and\na small icon, «Result in cache: the nodes after this one start from here».",[332,345,346,349,350,353],{},[18,347,348],{},"Large steps are not copied."," A step over ",[178,351,352],{},"CACHE__MAX_STEP_ROWS"," rows (1 million by\ndefault) is recomputed at every preview: a copy as large as the source saves nothing.\nThe node shows a refresh icon and the editor warns once, suggesting a development\nsample or an earlier filter.",[332,355,356,359,360,363,364,367],{},[18,357,358],{},"Entries expire."," A step unused for ",[178,361,362],{},"CACHE__TTL_SECONDS"," (one day by default) is\ndeleted. On BigQuery the cache is a set of expiring tables in a dataset of its own\n(",[178,365,366],{},"BIGQUERY__CACHE_DATASET",").",[14,369,370],{},"The Viewer does not use the step cache: its filters change at every click, and a cache\nof them would only fill the storage.",[23,372,374],{"id":373},"cancelled-previews","Cancelled previews",[14,376,377,378,381],{},"Moving through the nodes of a flow starts a preview at every click. Only the last one\nmatters, so each panel (the table, the chart, the list of a column's values) keeps one\npreview at a time: a new one cancels the previous, whether it is still queued or already\nrunning. On the external ClickHouse engine the query is stopped on the server too, and on\nBigQuery the job is cancelled. A preview that takes longer than ",[178,379,380],{},"PREVIEW_TIMEOUT_SECONDS","\n(120 by default) is stopped and reported.",[23,383,385],{"id":384},"the-viewer","The Viewer",[14,387,388,389,392,393,396,397,399],{},"The Viewer is a read-only analysis page over one datasource. Choose the datasource and\nthe engine at the top (your ",[18,390,391],{},"Preferred engine",", from ",[18,394,395],{},"Settings",", is the default),\nthen build the view in the side panel and press ",[18,398,165],{},":",[329,401,402,408,418,442,449],{},[332,403,404,407],{},[18,405,406],{},"Filters",": =, ≠, >, ≥, \u003C, ≤, between, contains, starts with, in (a,b,…), not in,\nis null, is not null. Dates and times get a calendar.",[332,409,410,413,414,417],{},[18,411,412],{},"Computed fields",": a name and a SQL expression in the engine's dialect, for example\n",[178,415,416],{},"ricavo \u002F chili",". They can be filtered, pivoted and charted like any column.",[332,419,420,423,424,227,427,227,430,433,434,437,438,441],{},[18,421,422],{},"Pivot",": ",[18,425,426],{},"Rows (dimensions)",[18,428,429],{},"Columns (dimensions)",[18,431,432],{},"Values"," and a\n",[18,435,436],{},"Function"," (sum, average, min, max, count). ",[18,439,440],{},"Don't repeat row dimensions"," prints a\ndimension's value once per group, as in a report.",[332,443,444,59,446,448],{},[18,445,58],{},[18,447,62],{}," tabs: the table shows the first 500 rows of the result; the\nchart works as in the editor, on the filtered and computed data.",[332,450,451,59,453,455],{},[18,452,132],{},[18,454,135],{}," download the whole current view (filters, computed\nfields and pivot applied). The chosen engine computes it; the file is written by a\nworker with Polars.",[14,457,458],{},[185,459],{"alt":460,"src":461},"The Viewer on Margin by Category and Month with the pivot on: categories as rows, months as columns, the sum of the margin in the cells","\u002Fmedia\u002Fguide\u002Fanalysis\u002Fviewer-pivot.png",[14,463,464],{},[192,465,466,467,469,470,473,474,227,477,473,480,227,483,473,485,227,488,490],{},"The saved view «Margin by category — month by month»: ",[18,468,422],{}," with ",[18,471,472],{},"Rows"," ",[178,475,476],{},"categoria",[18,478,479],{},"Columns",[178,481,482],{},"anno_mese",[18,484,432],{},[178,486,487],{},"margine",[18,489,436],{}," sum.",[23,492,494],{"id":493},"saved-views","Saved views",[14,496,497,500,501,504,505,507,508,511],{},[18,498,499],{},"Save view"," stores the current configuration, with a name, in a folder: the engine,\nthe filters, the computed fields, the pivot, the open tab and the chart's settings. A\nview holds ",[18,502,503],{},"no rows",": opening it tomorrow reads tomorrow's data. Saved views appear in\n",[18,506,72],{}," next to flows and datasources, and in the ",[18,509,510],{},"View"," picker of the Viewer.\nSaving again under the same name in the same folder updates the view; the name cannot\nbe reused there for a view of another datasource.",[23,513,515],{"id":514},"example-the-margin-of-the-sample-data","Example: the margin of the sample data",[14,517,518,519,522,523,227,525,527,528,531,532,227,535,227,538,223,540,227,543,227,546,549],{},"The sample flow «Margin by Category and Month» publishes a datasource of the same name\nin ",[18,520,521],{},"Sample \u002F Private tables",", with one row per product category and month:\n",[178,524,476],{},[178,526,482],{}," (",[178,529,530],{},"202510"," for October 2025), ",[178,533,534],{},"ricavo",[178,536,537],{},"costo",[178,539,487],{},[178,541,542],{},"chili",[178,544,545],{},"ordini",[178,547,548],{},"margine_pct",".",[551,552,553,562,576,588,609,627],"ol",{},[332,554,555,556,558,559,549],{},"Open ",[18,557,68],{}," and choose ",[178,560,561],{},"Margin by Category and Month",[332,563,564,423,566,568,569,572,573,575],{},[18,565,406],{},[178,567,548],{}," \u003C ",[178,570,571],{},"30",", then ",[18,574,165],{},". The table lists the months in\nwhich a category earned less than 30% of its revenue.",[332,577,578,423,580,583,584,587],{},[18,579,412],{},[178,581,582],{},"ricavo_al_kg"," = ",[178,585,586],{},"round(ricavo \u002F chili, 2)",", revenue per kilo.",[332,589,590,591,593,594,473,596,227,598,600,227,602,473,604,227,606,608],{},"Remove the filter and turn the ",[18,592,422],{}," on: ",[18,595,472],{},[178,597,476],{},[18,599,479],{},[178,601,482],{},[18,603,432],{},[178,605,487],{},[18,607,436],{}," sum. One row per category, one column\nper month.",[332,610,611,612,614,615,617,618,620,621,623,624,626],{},"Switch to ",[18,613,62],{},", choose ",[18,616,226],{},", X ",[178,619,482],{},", series ",[178,622,476],{},", function\nsum of ",[178,625,487],{},": the seasons of the sample data (Christmas, summer) show up in\neach category's line.",[332,628,629,631,632,635],{},[18,630,499],{},", name ",[178,633,634],{},"Margin by category — month by month",", in a folder of yours.\nWhoever can see that folder opens the same matrix, on the current data.",[14,637,216,638,641],{},[18,639,640],{},"Sample"," folder already holds four views built this way, among them «Margin\nwatch — categories under 30%» (step 2) and «Margin by category — month by month»\n(step 4).",[14,643,644],{},[185,645],{"alt":646,"src":647},"In the Viewer the pivot is turned off and on, then the Chart tab draws the sum of the margin by category","\u002Fmedia\u002Fguide\u002Fanalysis\u002Fpivot-and-chart.gif",[14,649,650],{},[192,651,652,653,655,656,658],{},"The same view: the rows without the pivot, the matrix with it, then ",[18,654,62],{}," with the sum of ",[178,657,487],{}," by category, computed on every row.",[23,660,662],{"id":661},"permissions","Permissions",[28,664,665,675],{},[31,666,667],{},[34,668,669,672],{},[37,670,671],{},"To",[37,673,674],{},"You need",[45,676,677,689,699,713],{},[34,678,679,682],{},[50,680,681],{},"Preview a node, or open a datasource in the Viewer",[50,683,684,685,688],{},"Read access to every datasource involved: ",[18,686,687],{},"VIEW"," on its folder",[34,690,691,694],{},[50,692,693],{},"Open a saved view",[50,695,696,698],{},[18,697,687],{}," on the view's folder, and on the datasource's to see its data",[34,700,701,704],{},[50,702,703],{},"Save, rename, move or delete a view",[50,705,706,709,710,712],{},[18,707,708],{},"EDIT"," on its folder (both folders, to move it); saving also checks ",[18,711,687],{}," on the datasource",[34,714,715,718],{},[50,716,717],{},"Download a node's data or export a view",[50,719,720],{},"Read access to every datasource involved",[14,722,723,724,727],{},"A view grants access to nothing: whoever opens it without access to the datasource gets\na message, not the data. Every download and export is in the audit log\n(",[178,725,726],{},"export.download","), with the format, the file name and the sources read.",[23,729,731],{"id":730},"limits-and-good-to-know","Limits and good to know",[329,733,734,737,744,759,762,769],{},[332,735,736],{},"The editor shows 100 rows per node and the Viewer 500; charts and exports read every\nrow.",[332,738,739,740,743],{},"A CSV export holds at most ",[178,741,742],{},"EXPORT__MAX_ROWS"," rows (5 million by default) and an Excel\nfile the format's limit of about one million. Larger results belong in a datasource,\nthrough a flow's Output node.",[332,745,746,747,750,751,754,755,367],{},"One person has at most ",[178,748,749],{},"EXPORT__MAX_RUNNING_PER_PERSON"," exports and documents (CSV,\nExcel, reports, dashboards) being prepared at once, 3 by default: past it Tabularia asks\nto wait for one to finish. Code — the REST API with a token, a notebook's\n",[178,752,753],{},"tabularia.report()"," — waits for its turn instead (",[297,756,758],{"href":757},"\u002Fdocs\u002Fapi","API",[332,760,761],{},"A pivot makes at most 500 new columns.",[332,763,764,765,549],{},"A preview's numbers come from the engine you previewed with. When a flow's production\nengine is another one, see ",[297,766,768],{"href":767},"\u002Fdocs\u002Fengines\u002Fengine-differences","Engine differences",[332,770,771],{},"Joining two sampled sources loses most matches: sample only the big table.",[23,773,775],{"id":774},"related","Related",[329,777,778,785,792,799,806],{},[332,779,780,784],{},[297,781,783],{"href":782},"\u002Fdocs\u002Fcapabilities\u002Fflows","Flows",": the editor and its nodes",[332,786,787,791],{},[297,788,790],{"href":789},"\u002Fdocs\u002Fcapabilities\u002Fengines","Engines",": which engine computes a preview",[332,793,794,798],{},[297,795,797],{"href":796},"\u002Fdocs\u002Fcapabilities\u002Fask-your-data","Ask your data",": questions in plain language over the same datasources",[332,800,801,805],{},[297,802,804],{"href":803},"\u002Fdocs\u002Fsql-scripts","SQL scripts",": free SQL over the catalogue, with CSV and Excel export",[332,807,808,812],{},[297,809,811],{"href":810},"\u002Fdocs\u002Fconfiguration#step-cache-and-metrics","Configuration",": the cache settings",{"title":814,"searchDepth":815,"depth":816,"links":817},"",2,3,[818,819,822,823,824,825,826,827,828,829],{"id":25,"depth":815,"text":26},{"id":169,"depth":815,"text":170,"children":820},[821],{"id":244,"depth":816,"text":245},{"id":323,"depth":815,"text":324},{"id":373,"depth":815,"text":374},{"id":384,"depth":815,"text":385},{"id":493,"depth":815,"text":494},{"id":514,"depth":815,"text":515},{"id":661,"depth":815,"text":662},{"id":730,"depth":815,"text":731},{"id":774,"depth":815,"text":775},"Tabularia shows the data at every step: click a node of a flow and its result appears\nunder the canvas, as a table or as a chart. The Viewer does the same on any\ndatasource without building a flow: filters, computed fields, a pivot and charts,\ncomputed by the engine on the whole table, and saved as a named view that anyone with\naccess to the folder can reopen. Nothing in either place changes the data.","md",{"source":833},"docs\u002Fcapabilities\u002Fpreview-and-analysis.md",true,"\u002Fdocs\u002Fcapabilities\u002Fpreview-and-analysis",{"title":5,"description":830},"docs\u002Fcapabilities\u002Fpreview-and-analysis","wQFL4NT873cZVN1xkdyhDs9oOKIGWCK2YT7-vyu2gtw",[840,859,905,937,969,997,1022,1048],{"title":841,"icon":842,"intro":843,"items":844},"Getting started","start","Install it on one machine, learn the few ideas everything else is built on, and run a first flow.",[845,847,850,853,856],{"path":846,"title":841},"\u002Fdocs\u002Fgetting-started",{"path":848,"title":849},"\u002Fdocs\u002Fgetting-started-docker-compose","Walkthrough with Docker Compose",{"path":851,"title":852},"\u002Fdocs\u002Fdeploy\u002Fminikube","Try it on your computer (minikube)",{"path":854,"title":855},"\u002Fdocs\u002Fconcepts","Concepts",{"path":857,"title":858},"\u002Fdocs\u002Foverview","Overview (README)",{"title":860,"icon":861,"intro":862,"items":863},"Capabilities","capabilities","What you can build: visual flows, analysis on any step, AI questions, pixel-perfect reports, dashboards, Python, R and SQL scripts, containers and the orchestration that ties them together.",[864,867,869,870,872,875,878,881,884,885,888,891,894,897,900,903,904],{"path":865,"title":866},"\u002Fdocs\u002Fcapabilities","All capabilities",{"path":782,"title":868},"Low-code flows",{"path":835,"title":5},{"path":796,"title":871},"Ask your data with AI",{"path":873,"title":874},"\u002Fdocs\u002Fcapabilities\u002Freports","Pixel-perfect reports",{"path":876,"title":877},"\u002Fdocs\u002Fcapabilities\u002Freport-functions","Report functions",{"path":879,"title":880},"\u002Fdocs\u002Fcapabilities\u002Fdashboards","Dashboards",{"path":882,"title":883},"\u002Fdocs\u002Fscripting","Python and R",{"path":803,"title":804},{"path":886,"title":887},"\u002Fdocs\u002Fcapabilities\u002Fnotebooks","marimo notebooks as apps",{"path":889,"title":890},"\u002Fdocs\u002Fcontainer-node","Docker images in flows",{"path":892,"title":893},"\u002Fdocs\u002Fcapabilities\u002Fflow-groups","Flow groups: orchestration",{"path":895,"title":896},"\u002Fdocs\u002Fcapabilities\u002Fscheduling","Scheduling",{"path":898,"title":899},"\u002Fdocs\u002Fpushmail","Pushmail: datasources, reports and dashboards by email",{"path":901,"title":902},"\u002Fdocs\u002Fplaceholders","Dynamic dates",{"path":789,"title":790},{"path":767,"title":768},{"title":906,"icon":907,"intro":908,"items":909},"Sources","sources","Every way data comes in: files, databases, buckets, SFTP folders, HTTP APIs, SharePoint, Google Sheets, and the results of your own flows.",[910,913,916,919,922,925,928,931,934],{"path":911,"title":912},"\u002Fdocs\u002Fsources","All sources",{"path":914,"title":915},"\u002Fdocs\u002Fsources\u002Ffiles","Uploaded files",{"path":917,"title":918},"\u002Fdocs\u002Fsources\u002Fdatabases","Database tables and queries",{"path":920,"title":921},"\u002Fdocs\u002Fs3-datasource","S3 buckets",{"path":923,"title":924},"\u002Fdocs\u002Fsftp","SFTP folders",{"path":926,"title":927},"\u002Fdocs\u002Fapi-datasource","HTTP APIs",{"path":929,"title":930},"\u002Fdocs\u002Fsources\u002Fsharepoint","Excel on SharePoint",{"path":932,"title":933},"\u002Fdocs\u002Fsources\u002Fgoogle-sheets","Google Sheets",{"path":935,"title":936},"\u002Fdocs\u002Fsources\u002Fflow-outputs","Results of flows and scripts",{"title":938,"icon":939,"intro":940,"items":941},"Connections","connections","The systems Tabularia reads from and writes to, how each connection is set up, and who may use it.",[942,945,948,951,954,956,957,959,960,963,966],{"path":943,"title":944},"\u002Fdocs\u002Fconnections","All connections",{"path":946,"title":947},"\u002Fdocs\u002Fconnections\u002Fdatabases","Databases",{"path":949,"title":950},"\u002Fdocs\u002Fsqlserver","Microsoft SQL Server driver",{"path":952,"title":953},"\u002Fdocs\u002Fconnections\u002Fs3","S3 and compatible storage",{"path":923,"title":955},"SFTP servers",{"path":926,"title":927},{"path":929,"title":958},"SharePoint",{"path":932,"title":933},{"path":961,"title":962},"\u002Fdocs\u002Fconnections\u002Fsmtp","SMTP email",{"path":964,"title":965},"\u002Fdocs\u002Fcontainer-registries","Container registries",{"path":967,"title":968},"\u002Fdocs\u002Fconnections\u002Fdestinations","Writing data out",{"title":970,"icon":971,"intro":972,"items":973},"Integrations","integrations","How Tabularia fits your stack: AI providers, the REST API and webhooks, dbt, OpenLineage, single sign-on, SIEM and monitoring.",[974,977,980,982,985,988,991,994],{"path":975,"title":976},"\u002Fdocs\u002Fintegrations","All integrations",{"path":978,"title":979},"\u002Fdocs\u002Fintegrations\u002Fai","AI: where it is used",{"path":757,"title":981},"API, tokens and webhooks",{"path":983,"title":984},"\u002Fdocs\u002Fdbt-export","Export to dbt",{"path":986,"title":987},"\u002Fdocs\u002Fopenlineage","OpenLineage",{"path":989,"title":990},"\u002Fdocs\u002Fsso-keycloak","Single sign-on with Keycloak",{"path":992,"title":993},"\u002Fdocs\u002Fsiem-splunk","Audit log to Splunk",{"path":995,"title":996},"\u002Fdocs\u002Fintegrations\u002Fmonitoring","Monitoring",{"title":998,"icon":999,"intro":1000,"items":1001},"Security & governance","governance","Who may see and do what, what is recorded, and how data quality and personal data are kept in check.",[1002,1005,1007,1010,1013,1016,1019],{"path":1003,"title":1004},"\u002Fdocs\u002Fgovernance","Overview",{"path":1006,"title":662},"\u002Fdocs\u002Fgovernance\u002Fpermissions",{"path":1008,"title":1009},"\u002Fdocs\u002Fgovernance\u002Faudit-log","Audit log",{"path":1011,"title":1012},"\u002Fdocs\u002Fgovernance\u002Fdata-contracts","Data contracts",{"path":1014,"title":1015},"\u002Fdocs\u002Fdesign\u002Fsso-group-mapping","SSO and group mapping",{"path":1017,"title":1018},"\u002Fdocs\u002Fexamples\u002Fkeycloak","Keycloak example on a laptop",{"path":1020,"title":1021},"\u002Fdocs\u002Fengines\u002Fclickhouse-ai-user","A ClickHouse user for the AI assistant",{"title":1023,"icon":1024,"intro":1025,"items":1026},"Install & operate","operate","Run it in production on Kubernetes, configure it, upgrade it and keep it healthy.",[1027,1030,1033,1036,1039,1042,1045],{"path":1028,"title":1029},"\u002Fdocs\u002Fdeploy\u002Fkubernetes","Kubernetes and Helm",{"path":1031,"title":1032},"\u002Fdocs\u002Fdeploy\u002Fkind","A company-like cluster on one computer (kind)",{"path":1034,"title":1035},"\u002Fdocs\u002Fdeploy\u002Fupgrading","Upgrading, backups and restore",{"path":1037,"title":1038},"\u002Fdocs\u002Fdeploy\u002Frelease-checklist","Install and upgrade checklist",{"path":1040,"title":1041},"\u002Fdocs\u002Fconfiguration","Configuration reference",{"path":1043,"title":1044},"\u002Fdocs\u002Fengine-settings","Settings from the panel",{"path":1046,"title":1047},"\u002Fdocs\u002Fdatabase-migrations","Database migrations",{"title":1049,"icon":1050,"intro":1051,"items":1052},"Reference","reference","Release process and the remaining reference pages.",[1053],{"path":1054,"title":1055},"\u002Fdocs\u002Frelease-process","Release process",1793656371473]