Modified: calcite/site/docs/lattice.html
URL: 
http://svn.apache.org/viewvc/calcite/site/docs/lattice.html?rev=1849503&r1=1849502&r2=1849503&view=diff
==============================================================================
--- calcite/site/docs/lattice.html (original)
+++ calcite/site/docs/lattice.html Fri Dec 21 23:04:58 2018
@@ -108,6 +108,17 @@
 and for recognizing that a materialized view can be used to solve a
 particular query.</p>
 
+<ul id="markdown-toc">
+  <li><a href="#concept" id="markdown-toc-concept">Concept</a></li>
+  <li><a href="#demonstration" 
id="markdown-toc-demonstration">Demonstration</a></li>
+  <li><a href="#statistics" id="markdown-toc-statistics">Statistics</a></li>
+  <li><a href="#lattice-suggester" id="markdown-toc-lattice-suggester">Lattice 
suggester</a></li>
+  <li><a href="#further-directions" 
id="markdown-toc-further-directions">Further directions</a></li>
+  <li><a href="#references" id="markdown-toc-references">References</a></li>
+</ul>
+
+<h2 id="concept">Concept</h2>
+
 <p>A lattice represents a star (or snowflake) schema, not a general
 schema. In particular, all relationships must be many-to-one, heading
 from a fact table at the center of the star.</p>
@@ -199,17 +210,218 @@ Examples:</p>
 </ul>
 
 <p>A “tile” is a materialized table in a lattice, with a particular
-dimensionality. (What Kylin calls a “cuboid”.) The “tiles” attribute
+dimensionality. The “tiles” attribute
 of the <a href="/docs/model.html#lattice">lattice JSON element</a>
 defines an initial set of tiles to materialize.</p>
 
-<p>If you run the algorithm, you can omit the tiles attribute. Calcite
-will choose an initial set. If you include the tiles attribute, the
-algorithm will start with that list and then start finding other tiles
-that are complementary (i.e. “fill in the gaps” left by the initial
-tiles).</p>
+<h2 id="demonstration">Demonstration</h2>
+
+<p>Create a model that includes a lattice:</p>
+
+<figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
+  </span><span class="s2">"version"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"1.0"</span><span class="p">,</span><span 
class="w">
+  </span><span class="s2">"defaultSchema"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"foodmart"</span><span 
class="p">,</span><span class="w">
+  </span><span class="s2">"schemas"</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w"> </span><span 
class="p">{</span><span class="w">
+    </span><span class="s2">"type"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"jdbc"</span><span class="p">,</span><span 
class="w">
+    </span><span class="s2">"name"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"foodmart"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcUser"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"FOODMART"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcPassword"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"FOODMART"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcUrl"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"jdbc:hsqldb:res:foodmart"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcSchema"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"foodmart"</span><span class="w">
+  </span><span class="p">},</span><span class="w">
+  </span><span class="p">{</span><span class="w">
+    </span><span class="s2">"name"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"adhoc"</span><span class="p">,</span><span 
class="w">
+    </span><span class="s2">"lattices"</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w"> </span><span 
class="p">{</span><span class="w">
+      </span><span class="s2">"name"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"star"</span><span class="p">,</span><span 
class="w">
+      </span><span class="s2">"sql"</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w">
+        </span><span class="s2">"select 1 from </span><span 
class="se">\"</span><span class="s2">foodmart</span><span 
class="se">\"</span><span class="s2">.</span><span class="se">\"</span><span 
class="s2">sales_fact_1997</span><span class="se">\"</span><span class="s2"> as 
</span><span class="se">\"</span><span class="s2">s</span><span 
class="se">\"</span><span class="s2">"</span><span class="p">,</span><span 
class="w">
+        </span><span class="s2">"join </span><span class="se">\"</span><span 
class="s2">foodmart</span><span class="se">\"</span><span 
class="s2">.</span><span class="se">\"</span><span 
class="s2">product</span><span class="se">\"</span><span class="s2"> as 
</span><span class="se">\"</span><span class="s2">p</span><span 
class="se">\"</span><span class="s2"> using (</span><span 
class="se">\"</span><span class="s2">product_id</span><span 
class="se">\"</span><span class="s2">)"</span><span class="p">,</span><span 
class="w">
+        </span><span class="s2">"join </span><span class="se">\"</span><span 
class="s2">foodmart</span><span class="se">\"</span><span 
class="s2">.</span><span class="se">\"</span><span 
class="s2">time_by_day</span><span class="se">\"</span><span class="s2"> as 
</span><span class="se">\"</span><span class="s2">t</span><span 
class="se">\"</span><span class="s2"> using (</span><span 
class="se">\"</span><span class="s2">time_id</span><span 
class="se">\"</span><span class="s2">)"</span><span class="p">,</span><span 
class="w">
+        </span><span class="s2">"join </span><span class="se">\"</span><span 
class="s2">foodmart</span><span class="se">\"</span><span 
class="s2">.</span><span class="se">\"</span><span 
class="s2">product_class</span><span class="se">\"</span><span class="s2"> as 
</span><span class="se">\"</span><span class="s2">pc</span><span 
class="se">\"</span><span class="s2"> on </span><span class="se">\"</span><span 
class="s2">p</span><span class="se">\"</span><span class="s2">.</span><span 
class="se">\"</span><span class="s2">product_class_id</span><span 
class="se">\"</span><span class="s2"> = </span><span class="se">\"</span><span 
class="s2">pc</span><span class="se">\"</span><span class="s2">.</span><span 
class="se">\"</span><span class="s2">product_class_id</span><span 
class="se">\"</span><span class="s2">"</span><span class="w">
+      </span><span class="p">],</span><span class="w">
+      </span><span class="s2">"auto"</span><span class="p">:</span><span 
class="w"> </span><span class="kc">true</span><span class="p">,</span><span 
class="w">
+      </span><span class="s2">"algorithm"</span><span class="p">:</span><span 
class="w"> </span><span class="kc">true</span><span class="p">,</span><span 
class="w">
+      </span><span class="s2">"rowCountEstimate"</span><span 
class="p">:</span><span class="w"> </span><span class="mi">86837</span><span 
class="p">,</span><span class="w">
+      </span><span class="s2">"defaultMeasures"</span><span 
class="p">:</span><span class="w"> </span><span class="p">[</span><span 
class="w"> </span><span class="p">{</span><span class="w">
+        </span><span class="s2">"agg"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"count"</span><span class="w">
+      </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span><span class="w">
+    </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span><span class="w">
+  </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span><span class="w">
+</span><span class="p">}</span></code></pre></figure>
+
+<p>This is a cut-down version of
+<a 
href="https://github.com/apache/calcite/blob/master/core/src/test/resources/hsqldb-foodmart-lattice-model.json";>hsqldb-foodmart-lattice-model.json</a>
+that does not include the “tiles” attribute, because we are going to 
generate
+tiles automatically. Let’s log into sqlline and connect to this schema:</p>
+
+<figure class="highlight"><pre><code class="language-sql" 
data-lang="sql"><span class="err">$</span> <span class="n">sqlline</span> <span 
class="k">version</span> <span class="mi">1</span><span class="p">.</span><span 
class="mi">3</span><span class="p">.</span><span class="mi">0</span>
+<span class="n">sqlline</span><span class="o">&gt;</span> <span 
class="o">!</span><span class="k">connect</span> <span 
class="n">jdbc</span><span class="p">:</span><span 
class="n">calcite</span><span class="p">:</span><span 
class="n">model</span><span class="o">=</span><span class="n">core</span><span 
class="o">/</span><span class="n">src</span><span class="o">/</span><span 
class="n">test</span><span class="o">/</span><span 
class="n">resources</span><span class="o">/</span><span 
class="n">hsqldb</span><span class="o">-</span><span 
class="n">foodmart</span><span class="o">-</span><span 
class="n">lattice</span><span class="o">-</span><span 
class="n">model</span><span class="p">.</span><span class="n">json</span> <span 
class="nv">"sa"</span> <span class="nv">""</span></code></pre></figure>
+
+<p>You’ll notice that it takes a few seconds to connect.
+Calcite is running the optimization algorithm, and creating and
+populating materialized views. Let’s run a query and check out its plan:</p>
+
+<figure class="highlight"><pre><code class="language-sql" 
data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span 
class="k">select</span> <span class="nv">"the_year"</span><span 
class="p">,</span><span class="nv">"the_month"</span><span class="p">,</span> 
<span class="k">count</span><span class="p">(</span><span 
class="o">*</span><span class="p">)</span> <span class="k">as</span> <span 
class="k">c</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span class="k">from</span> 
<span class="nv">"sales_fact_1997"</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span class="k">join</span> 
<span class="nv">"time_by_day"</span> <span class="k">using</span> <span 
class="p">(</span><span class="nv">"time_id"</span><span class="p">)</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span 
class="k">group</span> <span class="k">by</span> <span 
class="nv">"the_year"</span><span class="p">,</span><span 
class="nv">"the_month"</span><span class="p">;</span>
+<span class="o">+</span><span class="c1">----------+-----------+------+</span>
+<span class="o">|</span> <span class="n">the_year</span> <span 
class="o">|</span> <span class="n">the_month</span> <span class="o">|</span>    
<span class="k">C</span> <span class="o">|</span>
+<span class="o">+</span><span class="c1">----------+-----------+------+</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">September</span> <span class="o">|</span> 
<span class="mi">6663</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">April</span>     <span class="o">|</span> 
<span class="mi">6590</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">January</span>   <span class="o">|</span> 
<span class="mi">7034</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">June</span>      <span class="o">|</span> 
<span class="mi">6912</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">August</span>    <span class="o">|</span> 
<span class="mi">7038</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">February</span>  <span class="o">|</span> 
<span class="mi">6844</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">March</span>     <span class="o">|</span> 
<span class="mi">7710</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">October</span>   <span class="o">|</span> 
<span class="mi">6479</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">May</span>       <span class="o">|</span> 
<span class="mi">6866</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">December</span>  <span class="o">|</span> 
<span class="mi">8717</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">July</span>      <span class="o">|</span> 
<span class="mi">7752</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1997</span>     <span 
class="o">|</span> <span class="n">November</span>  <span class="o">|</span> 
<span class="mi">8232</span> <span class="o">|</span>
+<span class="o">+</span><span class="c1">----------+-----------+------+</span>
+<span class="mi">12</span> <span class="k">rows</span> <span 
class="n">selected</span> <span class="p">(</span><span 
class="mi">0</span><span class="p">.</span><span class="mi">147</span> <span 
class="n">seconds</span><span class="p">)</span>
+
+<span class="n">sqlline</span><span class="o">&gt;</span> <span 
class="k">explain</span> <span class="n">plan</span> <span class="k">for</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span 
class="k">select</span> <span class="nv">"the_year"</span><span 
class="p">,</span><span class="nv">"the_month"</span><span class="p">,</span> 
<span class="k">count</span><span class="p">(</span><span 
class="o">*</span><span class="p">)</span> <span class="k">as</span> <span 
class="k">c</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span class="k">from</span> 
<span class="nv">"sales_fact_1997"</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span class="k">join</span> 
<span class="nv">"time_by_day"</span> <span class="k">using</span> <span 
class="p">(</span><span class="nv">"time_id"</span><span class="p">)</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span 
class="k">group</span> <span class="k">by</span> <span 
class="nv">"the_year"</span><span class="p">,</span><span 
class="nv">"the_month"</span><span class="p">;</span>
+<span class="o">+</span><span 
class="c1">--------------------------------------------------------------------------------+</span>
+<span class="o">|</span> <span class="n">PLAN</span>                           
                                                <span class="o">|</span>
+<span class="o">+</span><span 
class="c1">--------------------------------------------------------------------------------+</span>
+<span class="o">|</span> <span class="n">EnumerableCalc</span><span 
class="p">(</span><span class="n">expr</span><span class="o">#</span><span 
class="mi">0</span><span class="p">..</span><span class="mi">2</span><span 
class="o">=</span><span class="p">[</span><span class="err">{</span><span 
class="n">inputs</span><span class="err">}</span><span class="p">],</span> 
<span class="n">the_year</span><span class="o">=</span><span 
class="p">[</span><span class="err">$</span><span class="n">t1</span><span 
class="p">],</span> <span class="n">the_month</span><span 
class="o">=</span><span class="p">[</span><span class="err">$</span><span 
class="n">t0</span><span class="p">],</span> <span class="k">C</span><span 
class="o">=</span><span class="p">[</span><span class="err">$</span><span 
class="n">t2</span><span class="p">])</span> <span class="o">|</span>
+<span class="o">|</span>   <span class="n">EnumerableAggregate</span><span 
class="p">(</span><span class="k">group</span><span class="o">=</span><span 
class="p">[</span><span class="err">{</span><span class="mi">3</span><span 
class="p">,</span> <span class="mi">4</span><span class="err">}</span><span 
class="p">],</span> <span class="k">C</span><span class="o">=</span><span 
class="p">[</span><span class="err">$</span><span class="n">SUM0</span><span 
class="p">(</span><span class="err">$</span><span class="mi">7</span><span 
class="p">)])</span>                           <span class="o">|</span>
+<span class="o">|</span>     <span class="n">EnumerableTableScan</span><span 
class="p">(</span><span class="k">table</span><span class="o">=</span><span 
class="p">[[</span><span class="n">adhoc</span><span class="p">,</span> <span 
class="n">m</span><span class="err">{</span><span class="mi">16</span><span 
class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span 
class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span 
class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span 
class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span 
class="err">}</span><span class="p">]])</span>        <span class="o">|</span>
+<span class="o">+</span><span 
class="c1">--------------------------------------------------------------------------------+</span></code></pre></figure>
+
+<p>The query gives the right answer, but plan is somewhat surprising.
+It doesn’t read the <code class="highlighter-rouge">sales_fact_1997</code> 
or <code class="highlighter-rouge">time_by_day</code> tables, but instead
+reads from a table called <code class="highlighter-rouge">m{16, 17, 27, 31, 
32, 36, 37}</code>. This is one of the
+tiles created at the start of the connection.</p>
+
+<p>It’s a real table, and you can even query it directly. It has only 120 
rows,
+so is a more efficient way to answer the query:</p>
+
+<figure class="highlight"><pre><code class="language-sql" 
data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span 
class="o">!</span><span class="k">describe</span> <span 
class="nv">"adhoc"</span><span class="p">.</span><span class="nv">"m{16, 17, 
27, 31, 32, 36, 37}"</span>
+<span class="o">+</span><span 
class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+</span>
+<span class="o">|</span> <span class="n">TABLE_SCHEM</span> <span 
class="o">|</span> <span class="k">TABLE_NAME</span>                    <span 
class="o">|</span> <span class="k">COLUMN_NAME</span>        <span 
class="o">|</span> <span class="n">DATA_TYPE</span> <span class="o">|</span> 
<span class="n">TYPE_NAME</span>       <span class="o">|</span>
+<span class="o">+</span><span 
class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">recyclable_package</span> <span class="o">|</span> <span 
class="mi">16</span>        <span class="o">|</span> <span 
class="n">BOOLEAN</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">low_fat</span>            <span class="o">|</span> <span 
class="mi">16</span>        <span class="o">|</span> <span 
class="n">BOOLEAN</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">product_family</span>     <span class="o">|</span> <span 
class="mi">12</span>        <span class="o">|</span> <span 
class="n">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span 
class="p">)</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">the_month</span>          <span class="o">|</span> <span 
class="mi">12</span>        <span class="o">|</span> <span 
class="n">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span 
class="p">)</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">the_year</span>           <span class="o">|</span> <span 
class="mi">5</span>         <span class="o">|</span> <span 
class="n">SMALLINT</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">quarter</span>            <span class="o">|</span> <span 
class="mi">12</span>        <span class="o">|</span> <span 
class="n">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span 
class="p">)</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">fiscal_period</span>      <span class="o">|</span> <span 
class="mi">12</span>        <span class="o">|</span> <span 
class="n">VARCHAR</span><span class="p">(</span><span class="mi">30</span><span 
class="p">)</span>     <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span 
class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="n">m0</span>                 <span class="o">|</span> <span 
class="o">-</span><span class="mi">5</span>        <span class="o">|</span> 
<span class="n">BIGINT</span> <span class="k">NOT</span> <span 
class="k">NULL</span> <span class="o">|</span>
+<span class="o">+</span><span 
class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+</span>
+
+<span class="n">sqlline</span><span class="o">&gt;</span> <span 
class="k">select</span> <span class="k">count</span><span 
class="p">(</span><span class="o">*</span><span class="p">)</span> <span 
class="k">as</span> <span class="k">c</span>
+<span class="p">.</span> <span class="p">.</span> <span class="p">.</span> 
<span class="p">.</span><span class="o">&gt;</span> <span class="k">from</span> 
<span class="nv">"adhoc"</span><span class="p">.</span><span class="nv">"m{16, 
17, 27, 31, 32, 36, 37}"</span><span class="p">;</span>
+<span class="o">+</span><span class="c1">-----+</span>
+<span class="o">|</span>   <span class="k">C</span> <span class="o">|</span>
+<span class="o">+</span><span class="c1">-----+</span>
+<span class="o">|</span> <span class="mi">120</span> <span class="o">|</span>
+<span class="o">+</span><span class="c1">-----+</span>
+<span class="mi">1</span> <span class="k">row</span> <span 
class="n">selected</span> <span class="p">(</span><span 
class="mi">0</span><span class="p">.</span><span class="mi">12</span> <span 
class="n">seconds</span><span class="p">)</span></code></pre></figure>
+
+<p>Let’s list the tables, and you will see several more tiles. There are also
+tables of the <code class="highlighter-rouge">foodmart</code> schema, and the 
system tables <code class="highlighter-rouge">TABLES</code> and <code 
class="highlighter-rouge">COLUMNS</code>,
+and the lattice itself, which appears as a table called <code 
class="highlighter-rouge">star</code>.</p>
+
+<figure class="highlight"><pre><code class="language-sql" 
data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span 
class="o">!</span><span class="n">tables</span>
+<span class="o">+</span><span 
class="c1">-------------+-------------------------------+--------------+</span>
+<span class="o">|</span> <span class="n">TABLE_SCHEM</span> <span 
class="o">|</span> <span class="k">TABLE_NAME</span>                    <span 
class="o">|</span> <span class="n">TABLE_TYPE</span>   <span class="o">|</span>
+<span class="o">+</span><span 
class="c1">-------------+-------------------------------+--------------+</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">18</span><span class="p">,</span> <span 
class="mi">32</span><span class="p">,</span> <span class="mi">37</span><span 
class="err">}</span>         <span class="o">|</span> <span 
class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span 
class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span 
class="mi">27</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span> <span class="o">|</span> <span 
class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">4</span><span class="p">,</span> <span class="mi">7</span><span 
class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span 
class="mi">27</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">37</span><span class="err">}</span>       
<span class="o">|</span> <span class="k">TABLE</span>        <span 
class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">4</span><span class="p">,</span> <span class="mi">7</span><span 
class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span 
class="mi">27</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">37</span><span class="err">}</span>       
<span class="o">|</span> <span class="k">TABLE</span>        <span 
class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">7</span><span class="p">,</span> <span class="mi">16</span><span 
class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span 
class="mi">19</span><span class="p">,</span> <span class="mi">32</span><span 
class="p">,</span> <span class="mi">37</span><span class="err">}</span>      
<span class="o">|</span> <span class="k">TABLE</span>        <span 
class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">m</span><span class="err">{</span><span 
class="mi">7</span><span class="p">,</span> <span class="mi">16</span><span 
class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span 
class="mi">27</span><span class="p">,</span> <span class="mi">30</span><span 
class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span 
class="mi">37</span><span class="err">}</span>  <span class="o">|</span> <span 
class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">adhoc</span>       <span 
class="o">|</span> <span class="n">star</span>                          <span 
class="o">|</span> <span class="n">STAR</span>         <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">customer</span>                      <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">product</span>                       <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">product_class</span>                 <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">promotion</span>                     <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">region</span>                        <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">sales_fact_1997</span>               <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">store</span>                         <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">foodmart</span>    <span 
class="o">|</span> <span class="n">time_by_day</span>                   <span 
class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
+<span class="o">|</span> <span class="n">metadata</span>    <span 
class="o">|</span> <span class="n">COLUMNS</span>                       <span 
class="o">|</span> <span class="n">SYSTEM_TABLE</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">metadata</span>    <span 
class="o">|</span> <span class="n">TABLES</span>                        <span 
class="o">|</span> <span class="n">SYSTEM_TABLE</span> <span class="o">|</span>
+<span class="o">+</span><span 
class="c1">-------------+-------------------------------+--------------+</span></code></pre></figure>
+
+<h2 id="statistics">Statistics</h2>
+
+<p>The algorithm that chooses which tiles of a lattice to materialize depends 
on
+a lot of statistics. It needs to know <code class="highlighter-rouge">select 
count(distinct a, b, c) from star</code>
+for each combination of columns (<code class="highlighter-rouge">a, b, 
c</code>) it is considering materializing. As
+a result the algorithm takes a long time on schemas with many rows and 
columns.</p>
+
+<p>We are working on a
+<a href="https://issues.apache.org/jira/browse/CALCITE-1616";>data profiler</a>
+to address this.</p>
+
+<h2 id="lattice-suggester">Lattice suggester</h2>
+
+<p>If you have defined a lattice, Calcite will self-tune within that lattice.
+But what if you have not defined a lattice?</p>
+
+<p>Enter the Lattice Suggester, which builds lattices based on incoming 
queries.
+Create a model with a schema that has <code 
class="highlighter-rouge">"autoLattice": true</code>:</p>
+
+<figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
+  </span><span class="s2">"version"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"1.0"</span><span class="p">,</span><span 
class="w">
+  </span><span class="s2">"defaultSchema"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"foodmart"</span><span 
class="p">,</span><span class="w">
+  </span><span class="s2">"schemas"</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w"> </span><span 
class="p">{</span><span class="w">
+    </span><span class="s2">"type"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"jdbc"</span><span class="p">,</span><span 
class="w">
+    </span><span class="s2">"name"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"foodmart"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcUser"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"FOODMART"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcPassword"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"FOODMART"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcUrl"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"jdbc:hsqldb:res:foodmart"</span><span 
class="p">,</span><span class="w">
+    </span><span class="s2">"jdbcSchema"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"foodmart"</span><span class="w">
+  </span><span class="p">},</span><span class="w"> </span><span 
class="p">{</span><span class="w">
+    </span><span class="s2">"name"</span><span class="p">:</span><span 
class="w"> </span><span class="s2">"adhoc"</span><span class="p">,</span><span 
class="w">
+    </span><span class="s2">"autoLattice"</span><span class="p">:</span><span 
class="w"> </span><span class="kc">true</span><span class="w">
+  </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span><span class="w">
+</span><span class="p">}</span></code></pre></figure>
+
+<p>This is a cut-down version of
+<a 
href="https://github.com/apache/calcite/blob/master/core/src/test/resources/hsqldb-foodmart-lattice-model.json";>hsqldb-foodmart-lattice-model.json</a></p>
+
+<p>As you run queries, Calcite will start to build lattices based on those
+queries. Each lattice is based on a particular fact table. As it sees more
+queries on that fact table, it will evolve the lattice, joining more dimension
+tables to the star, and adding measures.</p>
+
+<p>Each lattice will then optimize itself based on both the data and the 
queries.
+The goal is to create summary tables (tiles) that are reasonably small but are
+based on more frequently used attributes and measures.</p>
+
+<p>This feature is still experimental, but has the potential to make databases
+more “self-tuning” than before.</p>
 
-<h3 id="references">References</h3>
+<h2 id="further-directions">Further directions</h2>
+
+<p>Here are some ideas that have not yet been implemented:</p>
+<ul>
+  <li>The algorithm that builds tiles takes into account a log of past 
queries.</li>
+  <li>Materialized view manager sees incoming queries and builds tiles for 
them.</li>
+  <li>Materialized view manager drops tiles that are not actively used.</li>
+  <li>Lattice suggester adds lattices based on incoming queries,
+transfers tiles from existing lattices to new lattices,
+and drops lattices that are no longer being used.</li>
+  <li>Tiles that cover a horizontal slice of a table; and a rewrite algorithm 
that
+can answer a query by stitching together several tiles and going to the raw
+data to fill in the holes.</li>
+  <li>API to invalidate tiles, or horizontal slices of tiles, when the 
underlying
+data is changed.</li>
+</ul>
+
+<h2 id="references">References</h2>
 
 <ul>
 <li>[<a name="ref-hru96">HRU96</a>] V. Harinarayan, A. Rajaraman and J. Ullman.
@@ -245,12 +457,15 @@ tiles).</p>
 
   
   
+
+  
+  
     <div class="section-nav">
       <div class="left align-right">
           
             
             
-            <a href="/docs/stream.html" class="prev">Previous</a>
+            <a href="/docs/materialized_views.html" class="prev">Previous</a>
           
       </div>
       <div class="right align-left">
@@ -352,6 +567,16 @@ tiles).</p>
 
   
 
+  <li class=""><a href="/docs/materialized_views.html">Materialized 
Views</a></li>
+
+
+  
+  
+  
+  
+
+  
+
   <li class="current"><a href="/docs/lattice.html">Lattices</a></li>
 
 
@@ -428,7 +653,7 @@ tiles).</p>
 
   
 
-  <li class=""><a href="/docs/model.html">JSON models</a></li>
+  <li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
 
 
   

Modified: calcite/site/docs/materialized_views.html
URL: 
http://svn.apache.org/viewvc/calcite/site/docs/materialized_views.html?rev=1849503&r1=1849502&r2=1849503&view=diff
==============================================================================
--- calcite/site/docs/materialized_views.html (original)
+++ calcite/site/docs/materialized_views.html Fri Dec 21 23:04:58 2018
@@ -127,9 +127,9 @@
           </li>
         </ul>
       </li>
-      <li><a href="#references" 
id="markdown-toc-references">References</a></li>
     </ul>
   </li>
+  <li><a href="#references" id="markdown-toc-references">References</a></li>
 </ul>
 
 <h2 id="materialized-views-maintained-by-calcite">Materialized views 
maintained by Calcite</h2>
@@ -219,8 +219,8 @@ FROM depts
 JOIN (
   SELECT empid, deptno
   FROM emps
-  WHERE empid = 1) subq
-ON (depts.deptno = subq.deptno)
+  WHERE empid = 1) AS subq
+ON depts.deptno = subq.deptno
 </code></pre></div></div>
 
 <ul>
@@ -342,8 +342,8 @@ GROUP BY deptno
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT deptname, state, SUM(salary) AS s
 FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
-JOIN locations ON (emps.locationid = locations.locationid)
+JOIN depts ON emps.deptno = depts.deptno
+JOIN locations ON emps.locationid = locations.locationid
 GROUP BY deptname, state
 </code></pre></div></div>
 
@@ -353,7 +353,7 @@ GROUP BY deptname, state
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT empid, deptno, state, SUM(salary) AS s
 FROM emps
-JOIN locations ON (emps.locationid = locations.locationid)
+JOIN locations ON emps.locationid = locations.locationid
 GROUP BY empid, deptno, state
 </code></pre></div></div>
 
@@ -363,7 +363,7 @@ GROUP BY empid, deptno, state
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT deptname, state, SUM(s)
 FROM mv
-JOIN depts ON (mv.deptno = depts.deptno)
+JOIN depts ON mv.deptno = depts.deptno
 GROUP BY deptname, state
 </code></pre></div></div>
 
@@ -375,7 +375,7 @@ GROUP BY deptname, state
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT empid, deptname
 FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
+JOIN depts ON emps.deptno = depts.deptno
 WHERE salary &gt; 10000
 </code></pre></div></div>
 
@@ -385,7 +385,7 @@ WHERE salary &gt; 10000
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT empid, deptname
 FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
+JOIN depts ON emps.deptno = depts.deptno
 WHERE salary &gt; 12000
 </code></pre></div></div>
 
@@ -398,7 +398,7 @@ FROM mv
 UNION ALL
 SELECT empid, deptname
 FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
+JOIN depts ON emps.deptno = depts.deptno
 WHERE salary &gt; 10000 AND salary &lt;= 12000
 </code></pre></div></div>
 
@@ -410,7 +410,7 @@ WHERE salary &gt; 10000 AND salary &lt;=
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT empid, deptname, SUM(salary) AS s
 FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
+JOIN depts ON emps.deptno = depts.deptno
 WHERE salary &gt; 10000
 GROUP BY empid, deptname
 </code></pre></div></div>
@@ -421,7 +421,7 @@ GROUP BY empid, deptname
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT empid, deptname, SUM(salary) AS s
 FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
+JOIN depts ON emps.deptno = depts.deptno
 WHERE salary &gt; 12000
 GROUP BY empid, deptname
 </code></pre></div></div>
@@ -432,14 +432,14 @@ GROUP BY empid, deptname
 
 <div class="highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>SELECT empid, deptname, SUM(s)
 FROM (
-SELECT empid, deptname, s
-FROM mv
-UNION ALL
-SELECT empid, deptname, SUM(salary) AS s
-FROM emps
-JOIN depts ON (emps.deptno = depts.deptno)
-WHERE salary &gt; 10000 AND salary &lt;= 12000
-GROUP BY empid, deptname) subq
+  SELECT empid, deptname, s
+  FROM mv
+  UNION ALL
+  SELECT empid, deptname, SUM(salary) AS s
+  FROM emps
+  JOIN depts ON emps.deptno = depts.deptno
+  WHERE salary &gt; 10000 AND salary &lt;= 12000
+  GROUP BY empid, deptname) AS subq
 GROUP BY empid, deptname
 </code></pre></div></div>
 
@@ -447,7 +447,7 @@ GROUP BY empid, deptname
 
 <p>This rule still presents some limitations. In particular, the rewriting 
rule attempts to match all views against each query. We plan to implement more 
refined filtering techniques such as those described in [<a 
href="#ref-gl01">GL01</a>].</p>
 
-<h3 id="references">References</h3>
+<h2 id="references">References</h2>
 
 <ul>
 <li>[<a name="ref-gl01">GL01</a>] Jonathan Goldstein and Per-Ã¥ke Larson.
@@ -481,40 +481,26 @@ GROUP BY empid, deptname
 
   
   
+    <div class="section-nav">
+      <div class="left align-right">
+          
+            
+            
+            <a href="/docs/stream.html" class="prev">Previous</a>
+          
+      </div>
+      <div class="right align-left">
+          
+            
+            
 
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
-  
-  
-
+            
+            <a href="/docs/lattice.html" class="next">Next</a>
+          
+      </div>
+    </div>
+    <div class="clear"></div>
+    
 
         </article>
       </div>
@@ -602,6 +588,16 @@ GROUP BY empid, deptname
 
   
 
+  <li class="current"><a href="/docs/materialized_views.html">Materialized 
Views</a></li>
+
+
+  
+  
+  
+  
+
+  
+
   <li class=""><a href="/docs/lattice.html">Lattices</a></li>
 
 
@@ -678,7 +674,7 @@ GROUP BY empid, deptname
 
   
 
-  <li class=""><a href="/docs/model.html">JSON models</a></li>
+  <li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
 
 
   

Modified: calcite/site/docs/model.html
URL: 
http://svn.apache.org/viewvc/calcite/site/docs/model.html?rev=1849503&r1=1849502&r2=1849503&view=diff
==============================================================================
--- calcite/site/docs/model.html (original)
+++ calcite/site/docs/model.html Fri Dec 21 23:04:58 2018
@@ -2,7 +2,7 @@
 <html lang="en-US">
 <head>
   <meta charset="UTF-8">
-  <title>JSON models</title>
+  <title>JSON/YAML models</title>
   <meta name="viewport" content="width=device-width,initial-scale=1">
   <meta name="generator" content="Jekyll v3.7.3">
   <link rel="stylesheet" 
href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
@@ -99,12 +99,12 @@
 
       <div class="unit four-fifths">
         <article>
-          <h1>JSON models</h1>
+          <h1>JSON/YAML models</h1>
           <!--
 
 -->
 
-<p>Calcite models can be represented as JSON files.
+<p>Calcite models can be represented as JSON/YAML files.
 This page describes the structure of those files.</p>
 
 <p>Models can also be built programmatically using the <code 
class="highlighter-rouge">Schema</code> SPI.</p>
@@ -113,12 +113,21 @@ This page describes the structure of tho
 
 <h3 id="root">Root</h3>
 
+<h4 id="json">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">version</span><span class="p">:</span><span 
class="w"> </span><span class="err">'</span><span class="mf">1.0</span><span 
class="err">'</span><span class="p">,</span><span class="w">
   </span><span class="err">defaultSchema</span><span class="p">:</span><span 
class="w"> </span><span class="err">'mongo'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">schemas</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w"> </span><span 
class="err">Schema...</span><span class="w"> </span><span 
class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">version</span><span class="pi">:</span> <span 
class="s">1.0</span>
+<span class="na">defaultSchema</span><span class="pi">:</span> <span 
class="s">mongo</span>
+<span class="na">schemas</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="pi">[</span><span 
class="nv">Schema...</span><span class="pi">]</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">version</code> (required string) must have 
value <code class="highlighter-rouge">1.0</code>.</p>
 
 <p><code class="highlighter-rouge">defaultSchema</code> (optional string). If 
specified, it is
@@ -131,6 +140,8 @@ become the default schema for connection
 
 <p>Occurs within <code class="highlighter-rouge">root.schemas</code>.</p>
 
+<h4 id="json-1">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'foodmart'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">path</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="err">'lib'</span><span 
class="p">],</span><span class="w">
@@ -138,6 +149,15 @@ become the default schema for connection
   </span><span class="err">materializations</span><span 
class="p">:</span><span class="w"> </span><span class="p">[</span><span 
class="w"> </span><span class="err">Materialization...</span><span class="w"> 
</span><span class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-1">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">foodmart</span>
+<span class="na">path</span><span class="pi">:</span>
+  <span class="s">lib</span>
+<span class="na">cache</span><span class="pi">:</span> <span 
class="no">true</span>
+<span class="na">materializations</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="pi">[</span> <span 
class="nv">Materialization...</span> <span 
class="pi">]</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code> (required string) is the name 
of the schema.</p>
 
 <p><code class="highlighter-rouge">type</code> (optional string, default <code 
class="highlighter-rouge">map</code>) indicates sub-type. Values are:</p>
@@ -153,8 +173,16 @@ resolve functions used in this schema. I
 and each element of the list must be either a string or a list of
 strings. For example,</p>
 
+<h4 id="json-2">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="w">  </span><span class="err">path</span><span 
class="p">:</span><span class="w"> </span><span class="p">[</span><span 
class="w"> </span><span class="p">[</span><span class="err">'usr'</span><span 
class="p">,</span><span class="w"> </span><span class="err">'lib'</span><span 
class="p">],</span><span class="w"> </span><span class="err">'lib'</span><span 
class="w"> </span><span class="p">]</span></code></pre></figure>
 
+<h4 id="yaml-2">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">path</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="pi">[</span><span 
class="nv">usr</span><span class="pi">,</span> <span class="nv">lib</span><span 
class="pi">]</span>
+<span class="pi">-</span> <span class="s">lib</span></code></pre></figure>
+
 <p>declares a path with two elements: the schema ‘/usr/lib’ and the
 schema ‘/lib’. Most schemas are at the top level, and for these you can 
use a
 string.</p>
@@ -193,6 +221,8 @@ immediately, and are never flushed.</p>
 
 <p>Like base class <a href="#schema">Schema</a>, occurs within <code 
class="highlighter-rouge">root.schemas</code>.</p>
 
+<h4 id="json-3">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'foodmart'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">type</span><span class="p">:</span><span class="w"> 
</span><span class="err">'map'</span><span class="p">,</span><span class="w">
@@ -201,6 +231,17 @@ immediately, and are never flushed.</p>
   </span><span class="err">types</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w"> </span><span 
class="err">Type...</span><span class="w"> </span><span class="p">]</span><span 
class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-3">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">foodmart</span>
+<span class="na">type</span><span class="pi">:</span> <span 
class="s">map</span>
+<span class="na">tables</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="pi">[</span> <span 
class="nv">Table...</span> <span class="pi">]</span>
+<span class="na">functions</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="pi">[</span> <span 
class="nv">Function...</span> <span class="pi">]</span>
+<span class="na">types</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="pi">[</span> <span 
class="nv">Type...</span> <span class="pi">]</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code>, <code 
class="highlighter-rouge">type</code>, <code 
class="highlighter-rouge">path</code>, <code 
class="highlighter-rouge">cache</code>, <code 
class="highlighter-rouge">materializations</code> inherited from
 <a href="#schema">Schema</a>.</p>
 
@@ -216,6 +257,8 @@ defines the functions in this schema.</p
 
 <p>Like base class <a href="#schema">Schema</a>, occurs within <code 
class="highlighter-rouge">root.schemas</code>.</p>
 
+<h4 id="json-4">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'mongo'</span><span class="p">,</span><span class="w">
   </span><span class="err">type</span><span class="p">:</span><span class="w"> 
</span><span class="err">'custom'</span><span class="p">,</span><span class="w">
@@ -226,6 +269,15 @@ defines the functions in this schema.</p
   </span><span class="p">}</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-4">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">mongo</span>
+<span class="na">type</span><span class="pi">:</span> <span 
class="s">custom</span>
+<span class="na">factory</span><span class="pi">:</span> <span 
class="s">org.apache.calcite.adapter.mongodb.MongoSchemaFactory</span>
+<span class="na">operand</span><span class="pi">:</span>
+  <span class="na">host</span><span class="pi">:</span> <span 
class="s">localhost</span>
+  <span class="na">database</span><span class="pi">:</span> <span 
class="s">test</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code>, <code 
class="highlighter-rouge">type</code>, <code 
class="highlighter-rouge">path</code>, <code 
class="highlighter-rouge">cache</code>, <code 
class="highlighter-rouge">materializations</code> inherited from
 <a href="#schema">Schema</a>.</p>
 
@@ -240,6 +292,7 @@ factory.</p>
 <h3 id="jdbc-schema">JDBC Schema</h3>
 
 <p>Like base class <a href="#schema">Schema</a>, occurs within <code 
class="highlighter-rouge">root.schemas</code>.</p>
+<h4 id="json-5">JSON</h4>
 
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'foodmart'</span><span class="p">,</span><span 
class="w">
@@ -252,6 +305,17 @@ factory.</p>
   </span><span class="err">jdbcSchema</span><span class="p">:</span><span 
class="w"> </span><span class="err">TODO</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-5">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">foodmart</span>
+<span class="na">type</span><span class="pi">:</span> <span 
class="s">jdbc</span>
+<span class="na">jdbcDriver</span><span class="pi">:</span> <span 
class="s">TODO</span>
+<span class="na">jdbcUrl</span><span class="pi">:</span> <span 
class="s">TODO</span>
+<span class="na">jdbcUser</span><span class="pi">:</span> <span 
class="s">TODO</span>
+<span class="na">jdbcPassword</span><span class="pi">:</span> <span 
class="s">TODO</span>
+<span class="na">jdbcCatalog</span><span class="pi">:</span> <span 
class="s">TODO</span>
+<span class="na">jdbcSchema</span><span class="pi">:</span> <span 
class="s">TODO</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code>, <code 
class="highlighter-rouge">type</code>, <code 
class="highlighter-rouge">path</code>, <code 
class="highlighter-rouge">cache</code>, <code 
class="highlighter-rouge">materializations</code> inherited from
 <a href="#schema">Schema</a>.</p>
 
@@ -275,12 +339,20 @@ data source.</p>
 
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.materializations</code>.</p>
 
+<h4 id="json-6">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">view</span><span class="p">:</span><span class="w"> 
</span><span class="err">'V'</span><span class="p">,</span><span class="w">
   </span><span class="err">table</span><span class="p">:</span><span 
class="w"> </span><span class="err">'T'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">sql</span><span class="p">:</span><span class="w"> 
</span><span class="err">'select</span><span class="w"> </span><span 
class="err">deptno</span><span class="p">,</span><span class="w"> </span><span 
class="err">count(*)</span><span class="w"> </span><span 
class="err">as</span><span class="w"> </span><span class="err">c</span><span 
class="p">,</span><span class="w"> </span><span 
class="err">sum(sal)</span><span class="w"> </span><span 
class="err">as</span><span class="w"> </span><span class="err">s</span><span 
class="w"> </span><span class="err">from</span><span class="w"> </span><span 
class="err">emp</span><span class="w"> </span><span 
class="err">group</span><span class="w"> </span><span 
class="err">by</span><span class="w"> </span><span 
class="err">deptno'</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-6">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">view</span><span class="pi">:</span> <span 
class="s">V</span>
+<span class="na">table</span><span class="pi">:</span> <span class="s">T</span>
+<span class="na">sql</span><span class="pi">:</span> <span class="s">select 
deptno, count(*) as c, sum(sal) as s from emp group by 
deptno</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">view</code> (optional string) is the name 
of the view; null means that the table
 already exists and is populated with the correct data.</p>
 
@@ -295,11 +367,19 @@ Calcite will create and populate an in-m
 
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.tables</code>.</p>
 
+<h4 id="json-7">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'sales_fact'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">columns</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w"> </span><span 
class="err">Column...</span><span class="w"> </span><span 
class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-7">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">sales_fact</span>
+<span class="na">columns</span><span class="pi">:</span>
+  <span class="pi">[</span> <span class="nv">Column...</span> <span 
class="pi">]</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code> (required string) is the name 
of this table. Must be unique within the schema.</p>
 
 <p><code class="highlighter-rouge">type</code> (optional string, default <code 
class="highlighter-rouge">custom</code>) indicates sub-type. Values are:</p>
@@ -316,6 +396,8 @@ some kinds of table, optional for others
 
 <p>Like base class <a href="#table">Table</a>, occurs within <code 
class="highlighter-rouge">root.schemas.tables</code>.</p>
 
+<h4 id="json-8">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'female_emps'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">type</span><span class="p">:</span><span class="w"> 
</span><span class="err">'view'</span><span class="p">,</span><span class="w">
@@ -323,6 +405,13 @@ some kinds of table, optional for others
   </span><span class="err">modifiable</span><span class="p">:</span><span 
class="w"> </span><span class="kc">true</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-8">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">female_emps</span>
+<span class="na">type</span><span class="pi">:</span> <span 
class="s">view</span>
+<span class="na">sql</span><span class="pi">:</span> <span class="s">select * 
from emps where gender = 'F'</span>
+<span class="na">modifiable</span><span class="pi">:</span> <span 
class="no">true</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code>, <code 
class="highlighter-rouge">type</code>, <code 
class="highlighter-rouge">columns</code> inherited from <a 
href="#table">Table</a>.</p>
 
 <p><code class="highlighter-rouge">sql</code> (required string, or list of 
strings that will be concatenated as a
@@ -364,6 +453,8 @@ Calcite throws an error when executing t
 
 <p>Like base class <a href="#table">Table</a>, occurs within <code 
class="highlighter-rouge">root.schemas.tables</code>.</p>
 
+<h4 id="json-9">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'female_emps'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">type</span><span class="p">:</span><span class="w"> 
</span><span class="err">'custom'</span><span class="p">,</span><span class="w">
@@ -373,6 +464,14 @@ Calcite throws an error when executing t
   </span><span class="p">}</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-9">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">female_emps</span>
+<span class="na">type</span><span class="pi">:</span> <span 
class="s">custom</span>
+<span class="na">factory</span><span class="pi">:</span> <span 
class="s">TODO</span>
+<span class="na">operand</span><span class="pi">:</span>
+  <span class="na">todo</span><span class="pi">:</span> <span 
class="s">TODO</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code>, <code 
class="highlighter-rouge">type</code>, <code 
class="highlighter-rouge">columns</code> inherited from <a 
href="#table">Table</a>.</p>
 
 <p><code class="highlighter-rouge">factory</code> (required string) is the 
name of the factory class for this
@@ -389,11 +488,18 @@ factory.</p>
 
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.tables.stream</code>.</p>
 
+<h4 id="json-10">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">stream</span><span class="p">:</span><span 
class="w"> </span><span class="kc">true</span><span class="p">,</span><span 
class="w">
   </span><span class="err">history</span><span class="p">:</span><span 
class="w"> </span><span class="kc">false</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-10">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">stream</span><span class="pi">:</span> <span 
class="no">true</span>
+<span class="na">history</span><span class="pi">:</span> <span 
class="no">false</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">stream</code> (optional; default true) is 
whether the table allows streaming.</p>
 
 <p><code class="highlighter-rouge">history</code> (optional; default false) is 
whether the history of the stream is
@@ -403,16 +509,24 @@ available.</p>
 
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.tables.columns</code>.</p>
 
+<h4 id="json-11">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'empno'</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-11">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">empno</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code> (required string) is the name 
of this column.</p>
 
 <h3 id="function">Function</h3>
 
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.functions</code>.</p>
 
+<h4 id="json-12">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'MY_PLUS'</span><span class="p">,</span><span 
class="w">
   </span><span class="err">className</span><span class="p">:</span><span 
class="w"> </span><span 
class="err">'com.example.functions.MyPlusFunction'</span><span 
class="p">,</span><span class="w">
@@ -420,6 +534,13 @@ available.</p>
   </span><span class="err">path</span><span class="p">:</span><span class="w"> 
</span><span class="p">[]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-12">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">MY_PLUS</span>
+<span class="na">className</span><span class="pi">:</span> <span 
class="s">com.example.functions.MyPlusFunction</span>
+<span class="na">methodName</span><span class="pi">:</span> <span 
class="s">apply</span>
+<span class="na">path</span><span class="pi">:</span> <span 
class="pi">{}</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code> (required string) is the name 
of this function.</p>
 
 <p><code class="highlighter-rouge">className</code> (required string) is the 
name of the class that implements this
@@ -446,6 +567,8 @@ if found, creates an aggregate function.
 
 <p>Occurs within <code class="highlighter-rouge">root.schemas.types</code>.</p>
 
+<h4 id="json-13">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'mytype</span><span class="mi">1</span><span 
class="err">'</span><span class="p">,</span><span class="w">
   </span><span class="err">type</span><span class="p">:</span><span class="w"> 
</span><span class="err">'BIGINT'</span><span class="p">,</span><span class="w">
@@ -457,6 +580,14 @@ if found, creates an aggregate function.
   </span><span class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-13">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">mytype1</span>
+<span class="na">type</span><span class="pi">:</span> <span 
class="s">BIGINT</span>
+<span class="na">attributes</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="na">name</span><span 
class="pi">:</span> <span class="s">f1</span>
+  <span class="na">type</span><span class="pi">:</span> <span 
class="s">BIGINT</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code> (required string) is the name 
of this type.</p>
 
 <p><code class="highlighter-rouge">type</code> (optional) is the SQL type.</p>
@@ -469,6 +600,8 @@ If <code class="highlighter-rouge">attri
 
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.lattices</code>.</p>
 
+<h4 id="json-14">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">name</span><span class="p">:</span><span class="w"> 
</span><span class="err">'star'</span><span class="p">,</span><span class="w">
   </span><span class="err">sql</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w">
@@ -498,6 +631,29 @@ If <code class="highlighter-rouge">attri
   </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-14">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">star</span>
+<span class="na">sql</span><span class="pi">:</span> <span 
class="pi">&gt;</span>
+  <span class="no">select 1 from "foodmart"."sales_fact_1997" as "s"',</span>
+  <span class="no">join "foodmart"."product" as "p" using 
("product_id")',</span>
+  <span class="no">join "foodmart"."time_by_day" as "t" using 
("time_id")',</span>
+  <span class="no">join "foodmart"."product_class" as "pc" on 
"p"."product_class_id" = "pc"."product_class_id"</span>
+<span class="na">auto</span><span class="pi">:</span> <span 
class="no">false</span>
+<span class="na">algorithm</span><span class="pi">:</span> <span 
class="no">true</span>
+<span class="na">algorithmMaxMillis</span><span class="pi">:</span> <span 
class="s">10000</span>
+<span class="na">rowCountEstimate</span><span class="pi">:</span> <span 
class="s">86837</span>
+<span class="na">defaultMeasures</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="na">agg</span><span class="pi">:</span> 
<span class="s">count</span>
+<span class="na">tiles</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="na">dimensions</span><span 
class="pi">:</span> <span class="pi">[</span> <span class="s1">'</span><span 
class="s">the_year'</span><span class="pi">,</span> <span 
class="pi">[</span><span class="s1">'</span><span class="s">t'</span><span 
class="pi">,</span> <span class="s1">'</span><span 
class="s">quarter'</span><span class="pi">]</span> <span class="pi">]</span>
+  <span class="na">measures</span><span class="pi">:</span>
+  <span class="pi">-</span> <span class="na">agg</span><span 
class="pi">:</span> <span class="s">sum</span>
+    <span class="na">args</span><span class="pi">:</span> <span 
class="s">unit_sales</span>
+  <span class="pi">-</span> <span class="na">agg</span><span 
class="pi">:</span> <span class="s">sum</span>
+    <span class="na">args</span><span class="pi">:</span> <span 
class="s">store_sales</span>
+  <span class="pi">-</span> <span class="na">agg</span><span 
class="pi">:</span> <span class="s1">'</span><span 
class="s">count'</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">name</code> (required string) is the name 
of this lattice.</p>
 
 <p><code class="highlighter-rouge">sql</code> (required string, or list of 
strings that will be concatenated as a
@@ -526,8 +682,14 @@ Any tile defined in <code class="highlig
 measures not on this list. If not specified, the default list of measures is
 just ‘count(*)’:</p>
 
+<h4 id="json-15">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">[</span><span class="w"> </span><span 
class="p">{</span><span class="w"> </span><span class="err">name</span><span 
class="p">:</span><span class="w"> </span><span class="err">'count'</span><span 
class="w"> </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span></code></pre></figure>
 
+<h4 id="yaml-15">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span 
class="s">count</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">statisticProvider</code> (optional name of 
a class that implements
 <a 
href="/apidocs/org/apache/calcite/materialize/LatticeStatisticProvider.html">org.apache.calcite.materialize.LatticeStatisticProvider</a>)
 provides estimates of the number of distinct values in each column.</p>
@@ -558,6 +720,16 @@ value, and cache the results.</p>
   </span><span class="p">}</span><span class="w"> </span><span 
class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-16">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">dimensions</span><span class="pi">:</span> 
<span class="pi">[</span> <span class="s1">'</span><span 
class="s">the_year'</span><span class="pi">,</span> <span 
class="pi">[</span><span class="s1">'</span><span class="s">t'</span><span 
class="pi">,</span> <span class="s1">'</span><span 
class="s">quarter'</span><span class="pi">]</span> <span class="pi">]</span>
+<span class="na">measures</span><span class="pi">:</span>
+<span class="pi">-</span> <span class="na">agg</span><span class="pi">:</span> 
<span class="s">sum</span>
+  <span class="na">args</span><span class="pi">:</span> <span 
class="s">unit_sales</span>
+<span class="pi">-</span> <span class="na">agg</span><span class="pi">:</span> 
<span class="s">sum</span>
+  <span class="na">args</span><span class="pi">:</span> <span 
class="s">store_sales</span>
+<span class="pi">-</span> <span class="na">agg</span><span class="pi">:</span> 
<span class="s">count</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">dimensions</code> (list of strings or 
string lists, required, but may be empty)
 defines the dimensionality of this tile.
 Each dimension is a column from the lattice, like a <code 
class="highlighter-rouge">GROUP BY</code> clause.
@@ -574,11 +746,18 @@ lattice’s default measure list.</p>
 <p>Occurs within <code 
class="highlighter-rouge">root.schemas.lattices.defaultMeasures</code>
 and <code 
class="highlighter-rouge">root.schemas.lattices.tiles.measures</code>.</p>
 
+<h4 id="json-16">JSON</h4>
+
 <figure class="highlight"><pre><code class="language-json" 
data-lang="json"><span class="p">{</span><span class="w">
   </span><span class="err">agg</span><span class="p">:</span><span class="w"> 
</span><span class="err">'sum'</span><span class="p">,</span><span class="w">
   </span><span class="err">args</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w"> </span><span 
class="err">'unit_sales'</span><span class="w"> </span><span 
class="p">]</span><span class="w">
 </span><span class="p">}</span></code></pre></figure>
 
+<h4 id="yaml-17">YAML</h4>
+
+<figure class="highlight"><pre><code class="language-yaml" 
data-lang="yaml"><span class="na">agg</span><span class="pi">:</span> <span 
class="s">sum</span>
+<span class="na">args</span><span class="pi">:</span> <span 
class="s">unit_sales</span></code></pre></figure>
+
 <p><code class="highlighter-rouge">agg</code> is the name of an aggregate 
function (usually ‘count’, ‘sum’, ‘min’,
 ‘max’).</p>
 
@@ -647,6 +826,9 @@ when you want to pass the column as a me
 
   
   
+
+  
+  
     <div class="section-nav">
       <div class="left align-right">
           
@@ -754,6 +936,16 @@ when you want to pass the column as a me
 
   
 
+  <li class=""><a href="/docs/materialized_views.html">Materialized 
Views</a></li>
+
+
+  
+  
+  
+  
+
+  
+
   <li class=""><a href="/docs/lattice.html">Lattices</a></li>
 
 
@@ -830,7 +1022,7 @@ when you want to pass the column as a me
 
   
 
-  <li class="current"><a href="/docs/model.html">JSON models</a></li>
+  <li class="current"><a href="/docs/model.html">JSON/YAML models</a></li>
 
 
   

Modified: calcite/site/docs/os_adapter.html
URL: 
http://svn.apache.org/viewvc/calcite/site/docs/os_adapter.html?rev=1849503&r1=1849502&r2=1849503&view=diff
==============================================================================
--- calcite/site/docs/os_adapter.html (original)
+++ calcite/site/docs/os_adapter.html Fri Dec 21 23:04:58 2018
@@ -388,6 +388,9 @@ into <a href="https://github.com/julianh
   
   
 
+  
+  
+
 
         </article>
       </div>
@@ -475,6 +478,16 @@ into <a href="https://github.com/julianh
 
   
 
+  <li class=""><a href="/docs/materialized_views.html">Materialized 
Views</a></li>
+
+
+  
+  
+  
+  
+
+  
+
   <li class=""><a href="/docs/lattice.html">Lattices</a></li>
 
 
@@ -551,7 +564,7 @@ into <a href="https://github.com/julianh
 
   
 
-  <li class=""><a href="/docs/model.html">JSON models</a></li>
+  <li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
 
 
   

Modified: calcite/site/docs/pig_adapter.html
URL: 
http://svn.apache.org/viewvc/calcite/site/docs/pig_adapter.html?rev=1849503&r1=1849502&r2=1849503&view=diff
==============================================================================
--- calcite/site/docs/pig_adapter.html (original)
+++ calcite/site/docs/pig_adapter.html Fri Dec 21 23:04:58 2018
@@ -225,6 +225,9 @@ So, Piglet is basically the opposite of
   
   
 
+  
+  
+
 
         </article>
       </div>
@@ -312,6 +315,16 @@ So, Piglet is basically the opposite of
 
   
 
+  <li class=""><a href="/docs/materialized_views.html">Materialized 
Views</a></li>
+
+
+  
+  
+  
+  
+
+  
+
   <li class=""><a href="/docs/lattice.html">Lattices</a></li>
 
 
@@ -388,7 +401,7 @@ So, Piglet is basically the opposite of
 
   
 
-  <li class=""><a href="/docs/model.html">JSON models</a></li>
+  <li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
 
 
   

Modified: calcite/site/docs/powered_by.html
URL: 
http://svn.apache.org/viewvc/calcite/site/docs/powered_by.html?rev=1849503&r1=1849502&r2=1849503&view=diff
==============================================================================
--- calcite/site/docs/powered_by.html (original)
+++ calcite/site/docs/powered_by.html Fri Dec 21 23:04:58 2018
@@ -122,7 +122,7 @@
   <li><a href="#cascading" id="markdown-toc-cascading">Cascading</a></li>
   <li><a href="#dremio" id="markdown-toc-dremio">Dremio</a></li>
   <li><a href="#herddb" id="markdown-toc-herddb">HerdDB</a></li>
-  <li><a href="#omnisci" id="markdown-toc-omnisci">OmniSci</a></li>
+  <li><a href="#mapd" id="markdown-toc-mapd">MapD</a></li>
   <li><a href="#qubole-quark" id="markdown-toc-qubole-quark">Qubole 
Quark</a></li>
   <li><a href="#sql-gremlin" id="markdown-toc-sql-gremlin">SQL-Gremlin</a></li>
 </ul>
@@ -209,9 +209,9 @@ is a distributed JVM-Embeddable Database
 <a href="https://bookkeeper.apache.org/";>Apache BookKeeper</a>.
 It uses Calcite as its SQL Planner.</p>
 
-<h3 id="omnisci">OmniSci</h3>
+<h3 id="mapd">MapD</h3>
 
-<p><a href="https://www.omnisci.com";>OmniSci</a>
+<p><a href="https://www.mapd.com";>MapD</a>
 is a GPU-powered database and visual analytics platform for
 interactive exploration of large datasets.</p>
 
@@ -281,6 +281,9 @@ graph database.</p>
 
   
   
+
+  
+  
     <div class="section-nav">
       <div class="left align-right">
           
@@ -388,6 +391,16 @@ graph database.</p>
 
   
 
+  <li class=""><a href="/docs/materialized_views.html">Materialized 
Views</a></li>
+
+
+  
+  
+  
+  
+
+  
+
   <li class=""><a href="/docs/lattice.html">Lattices</a></li>
 
 
@@ -464,7 +477,7 @@ graph database.</p>
 
   
 
-  <li class=""><a href="/docs/model.html">JSON models</a></li>
+  <li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
 
 
   


Reply via email to