<!doctype html>
<html lang="en-US" data-theme="light">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <meta name="generator" content="VuePress 2.0.0-rc.19" />
    <meta name="theme" content="VuePress Theme Hope 2.0.0-rc.71" />
    <style>
      :root {
        --vp-c-bg: #fff;
      }

      [data-theme="dark"] {
        --vp-c-bg: #1b1b1f;
      }

      html,
      body {
        background: var(--vp-c-bg);
      }
    </style>
    <script>
      const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
      const systemDarkMode =
        window.matchMedia &&
        window.matchMedia("(prefers-color-scheme: dark)").matches;

      if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
        document.documentElement.setAttribute("data-theme", "dark");
      }
    </script>
    <meta name="theme-color" content="#3eaf7c"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="google-site-verification" content="xpSs_GFAJnR-mRHMuyU_nvwNsq2rK6iwXHBu3aBRZuA"><link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png"><link rel="manifest" href="/favicon/site.webmanifest"><link rel="mask-icon" href="/favicon/safari-pinned-tab.svg" color="#3a0839"><link rel="shortcut icon" href="/favicon/favicon.ico"><meta name="msapplication-TileColor" content="#3a0839"><meta name="msapplication-config" content="/favicon/browserconfig.xml"><script async src="//gc.zgo.at/count.js" data-goatcounter="https://trilogydata.goatcounter.com/count"></script><title>Trilogy</title><meta name="description" content="Typed, declarative ETL and query language that compiles to SQL.">
    <link rel="preload" href="/assets/style-NCZH2qIF.css" as="style"><link rel="stylesheet" href="/assets/style-NCZH2qIF.css">
    <link rel="modulepreload" href="/assets/app-DWNYXa5G.js"><link rel="modulepreload" href="/assets/404.html-DixOG_A4.js"><link rel="modulepreload" href="/assets/plugin-vue_export-helper-DlAUqK2U.js">
    <link rel="prefetch" href="/assets/index.html-BUyP9fhB.js" as="script"><link rel="prefetch" href="/assets/index.html-qxgK6frq.js" as="script"><link rel="prefetch" href="/assets/analytics_in_python.html-CwvolkBm.js" as="script"><link rel="prefetch" href="/assets/bad_at_hackernews.html-BD4LAs5e.js" as="script"><link rel="prefetch" href="/assets/composability_reuse.html-C9nxvB6w.js" as="script"><link rel="prefetch" href="/assets/defining_a_model.html-DSswzKxg.js" as="script"><link rel="prefetch" href="/assets/editor_design.html-BfVF0Par.js" as="script"><link rel="prefetch" href="/assets/path_to_value.html-CMcrpf0k.js" as="script"><link rel="prefetch" href="/assets/reduce_reuse_recycle.html-gzv4x3CF.js" as="script"><link rel="prefetch" href="/assets/semantic_model.html-CIDh3CH3.js" as="script"><link rel="prefetch" href="/assets/sql_blogs.html-DF7wjI2y.js" as="script"><link rel="prefetch" href="/assets/streamlit_example.html-CsGdv3Ci.js" as="script"><link rel="prefetch" href="/assets/to_have_or_have_not.html-bvmloQBC.js" as="script"><link rel="prefetch" href="/assets/tpc_ds.html-Cf-O5Enn.js" as="script"><link rel="prefetch" href="/assets/trilogy_discussions.html-CFNl1O5T.js" as="script"><link rel="prefetch" href="/assets/trilogy_nlp_history.html-CaOK_n-N.js" as="script"><link rel="prefetch" href="/assets/trilogy_nlp_today.html-ubST8S6O.js" as="script"><link rel="prefetch" href="/assets/trilogy_t_dagster.html-DXhfnOdY.js" as="script"><link rel="prefetch" href="/assets/trilogy_transform.html-BDpjkTvP.js" as="script"><link rel="prefetch" href="/assets/index.html-CSsuOZyr.js" as="script"><link rel="prefetch" href="/assets/index.html-BMqKYnTv.js" as="script"><link rel="prefetch" href="/assets/index.html-D2H8_8vD.js" as="script"><link rel="prefetch" href="/assets/old_demo.html-ClPFWSBQ.js" as="script"><link rel="prefetch" href="/assets/index.html-LSyDUS1m.js" as="script"><link rel="prefetch" href="/assets/index.html-CLxvgWgC.js" as="script"><link rel="prefetch" href="/assets/index.html-B5v386mx.js" as="script"><link rel="prefetch" href="/assets/index.html-DAesOngS.js" as="script"><link rel="prefetch" href="/assets/index.html-BEY6htuB.js" as="script"><link rel="prefetch" href="/assets/index.html-Bh74XxVa.js" as="script"><link rel="prefetch" href="/assets/photoswipe.esm-GXRgw7eJ.js" as="script"><link rel="prefetch" href="/assets/Accordian-By7r53Yq.js" as="script"><link rel="prefetch" href="/assets/FreeformNLPQueryComponent-DPHZrujd.js" as="script"><link rel="prefetch" href="/assets/FreeformQueryComponent-C1hshfVn.js" as="script"><link rel="prefetch" href="/assets/LoadingButton-lW9t1lm8.js" as="script"><link rel="prefetch" href="/assets/OtherComponent-Dmp9xbLt.js" as="script"><link rel="prefetch" href="/assets/QueryComponent-CxWO-CBI.js" as="script"><link rel="prefetch" href="/assets/ResultComponent-DLFENXRd.js" as="script"><link rel="prefetch" href="/assets/SQL-BKT7r9mU.js" as="script"><link rel="prefetch" href="/assets/SQLAccordian-DEPORTTZ.js" as="script"><link rel="prefetch" href="/assets/Tab-ed6OYnYf.js" as="script"><link rel="prefetch" href="/assets/TableComponent-Ty29a3Q8.js" as="script"><link rel="prefetch" href="/assets/Tabs-Dr4Kvgcc.js" as="script"><link rel="prefetch" href="/assets/Bar-ZWZ_MOYT.js" as="script"><link rel="prefetch" href="/assets/setupDevtools-7MC2TMWH-BqxarP3u.js" as="script">
  </head>
  <body>
    <div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="vp-skip-link sr-only">Skip to main content</a><!--]--><!--[--><div class="theme-container no-sidebar external-link-icon has-toc" vp-container><!--[--><header id="navbar" class="vp-navbar" vp-navbar><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><a class="route-link vp-brand" href="/" aria-label="Take me home"><img class="vp-nav-logo" src="/img/logo-only-transparent-png.png" alt><!----><span class="vp-site-name hide-in-pad">Trilogy</span></a><!--]--></div><div class="vp-navbar-center"><!--[--><nav class="vp-nav-links"><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/thesis/" aria-label="Thesis" iconsizing="height"><!---->Thesis<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/quickstart/" aria-label="Quickstart" iconsizing="height"><!---->Quickstart<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/demo/" aria-label="Demo" iconsizing="height"><!---->Demo<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/concepts/" aria-label="Concepts" iconsizing="height"><!---->Concepts<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/installation/" aria-label="Install" iconsizing="height"><!---->Install<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/transform/" aria-label="ETL" iconsizing="height"><!---->ETL<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/nlp/" aria-label="AI" iconsizing="height"><!---->AI<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/studio/" aria-label="Studio" iconsizing="height"><!---->Studio<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/contributing/" aria-label="Contribute" iconsizing="height"><!---->Contribute<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/blog/" aria-label="Blog" iconsizing="height"><!---->Blog<!----></a></div></nav><!--]--></div><div class="vp-navbar-end"><!--[--><!----><div class="vp-nav-item vp-action"><a class="vp-action-link" href="https://github.com/trilogy-data/pytrilogy" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" name="github" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><div class="vp-nav-item hide-in-mobile"><button type="button" class="vp-color-mode-switch" id="color-mode-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" name="auto" style="display:block;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" name="dark" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" name="light" style="display:none;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><!----><!--]--><button type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar" vp-sidebar><!----><ul class="vp-sidebar-links"></ul><!----></aside><!--[--><main id="main-content" class="vp-page not-found"><div class="not-found-hint"><p class="error-code">404</p><h1 class="error-title">Page not found</h1><p class="error-hint">How did we get here?</p></div><div class="actions"><button type="button" class="action-button">Go back</button><button type="button" class="action-button">Take me home</button></div></main><!--]--><!----></div><!--]--><!--]--><!--[--><!----><!--[--><!--]--><!--]--><!--]--></div>
    <script type="module" src="/assets/app-DWNYXa5G.js" defer></script>
  </body>
</html>

