This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 05ce827605 Publish built docs triggered by 
86a2ab0885259b32464c8ed88632c5d594e7b665
05ce827605 is described below

commit 05ce827605f9fc0d00913b357bb5acd78c9c9480
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Sun Feb 4 16:02:18 2024 +0000

    Publish built docs triggered by 86a2ab0885259b32464c8ed88632c5d594e7b665
---
 .../library-user-guide/working-with-exprs.md.txt   | 28 ++++++++++++++++++++
 library-user-guide/working-with-exprs.html         | 30 ++++++++++++++++++++++
 searchindex.js                                     |  2 +-
 3 files changed, 59 insertions(+), 1 deletion(-)

diff --git a/_sources/library-user-guide/working-with-exprs.md.txt 
b/_sources/library-user-guide/working-with-exprs.md.txt
index 96be8ef7f1..b7e9248a7c 100644
--- a/_sources/library-user-guide/working-with-exprs.md.txt
+++ b/_sources/library-user-guide/working-with-exprs.md.txt
@@ -180,6 +180,34 @@ Projection: Int64(1) + Int64(1) AS added_one
 
 I.e. the `add_one` UDF has been inlined into the projection.
 
+## Getting the data type of the expression
+
+The `arrow::datatypes::DataType` of the expression can be obtained by calling 
the `get_type` given something that implements `Expr::Schemable`, for example a 
`DFschema` object:
+
+```rust
+use arrow_schema::DataType;
+use datafusion::common::{DFField, DFSchema};
+use datafusion::logical_expr::{col, ExprSchemable};
+use std::collections::HashMap;
+
+let expr = col("c1") + col("c2");
+let schema = DFSchema::new_with_metadata(
+    vec![
+        DFField::new_unqualified("c1", DataType::Int32, true),
+        DFField::new_unqualified("c2", DataType::Float32, true),
+    ],
+    HashMap::new(),
+)
+.unwrap();
+print!("type = {}", expr.get_type(&schema).unwrap());
+```
+
+This results in the following output:
+
+```text
+type = Float32
+```
+
 ## Conclusion
 
 In this guide, we've seen how to create `Expr`s programmatically and how to 
rewrite them. This is useful for simplifying and optimizing `Expr`s. We've also 
seen how to test our rule to ensure it works properly.
diff --git a/library-user-guide/working-with-exprs.html 
b/library-user-guide/working-with-exprs.html
index 40af0cf28c..2d40edc2f2 100644
--- a/library-user-guide/working-with-exprs.html
+++ b/library-user-guide/working-with-exprs.html
@@ -406,6 +406,11 @@
    Testing the Rule
   </a>
  </li>
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" 
href="#getting-the-data-type-of-the-expression">
+   Getting the data type of the expression
+  </a>
+ </li>
  <li class="toc-h2 nav-item toc-entry">
   <a class="reference internal nav-link" href="#conclusion">
    Conclusion
@@ -602,6 +607,31 @@
 </div>
 <p>I.e. the <code class="docutils literal notranslate"><span 
class="pre">add_one</span></code> UDF has been inlined into the projection.</p>
 </section>
+<section id="getting-the-data-type-of-the-expression">
+<h2>Getting the data type of the expression<a class="headerlink" 
href="#getting-the-data-type-of-the-expression" title="Link to this 
heading">¶</a></h2>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">arrow::datatypes::DataType</span></code> of the expression can be 
obtained by calling the <code class="docutils literal notranslate"><span 
class="pre">get_type</span></code> given something that implements <code 
class="docutils literal notranslate"><span 
class="pre">Expr::Schemable</span></code>, for example a <code class="docutils 
literal notranslate"><span class="pre">DFschema</span></code> object:</p>
+<div class="highlight-rust notranslate"><div 
class="highlight"><pre><span></span><span class="k">use</span><span class="w"> 
</span><span class="n">arrow_schema</span>::<span 
class="n">DataType</span><span class="p">;</span>
+<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion</span>::<span class="n">common</span>::<span 
class="p">{</span><span class="n">DFField</span><span class="p">,</span><span 
class="w"> </span><span class="n">DFSchema</span><span class="p">};</span>
+<span class="k">use</span><span class="w"> </span><span 
class="n">datafusion</span>::<span class="n">logical_expr</span>::<span 
class="p">{</span><span class="n">col</span><span class="p">,</span><span 
class="w"> </span><span class="n">ExprSchemable</span><span class="p">};</span>
+<span class="k">use</span><span class="w"> </span><span 
class="n">std</span>::<span class="n">collections</span>::<span 
class="n">HashMap</span><span class="p">;</span>
+
+<span class="kd">let</span><span class="w"> </span><span 
class="n">expr</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="n">col</span><span class="p">(</span><span 
class="s">&quot;c1&quot;</span><span class="p">)</span><span class="w"> 
</span><span class="o">+</span><span class="w"> </span><span 
class="n">col</span><span class="p">(</span><span 
class="s">&quot;c2&quot;</span><span class="p">);</span>
+<span class="kd">let</span><span class="w"> </span><span 
class="n">schema</span><span class="w"> </span><span class="o">=</span><span 
class="w"> </span><span class="n">DFSchema</span>::<span 
class="n">new_with_metadata</span><span class="p">(</span>
+<span class="w">    </span><span class="fm">vec!</span><span class="p">[</span>
+<span class="w">        </span><span class="n">DFField</span>::<span 
class="n">new_unqualified</span><span class="p">(</span><span 
class="s">&quot;c1&quot;</span><span class="p">,</span><span class="w"> 
</span><span class="n">DataType</span>::<span class="n">Int32</span><span 
class="p">,</span><span class="w"> </span><span class="kc">true</span><span 
class="p">),</span>
+<span class="w">        </span><span class="n">DFField</span>::<span 
class="n">new_unqualified</span><span class="p">(</span><span 
class="s">&quot;c2&quot;</span><span class="p">,</span><span class="w"> 
</span><span class="n">DataType</span>::<span class="n">Float32</span><span 
class="p">,</span><span class="w"> </span><span class="kc">true</span><span 
class="p">),</span>
+<span class="w">    </span><span class="p">],</span>
+<span class="w">    </span><span class="n">HashMap</span>::<span 
class="n">new</span><span class="p">(),</span>
+<span class="p">)</span>
+<span class="p">.</span><span class="n">unwrap</span><span class="p">();</span>
+<span class="fm">print!</span><span class="p">(</span><span 
class="s">&quot;type = {}&quot;</span><span class="p">,</span><span class="w"> 
</span><span class="n">expr</span><span class="p">.</span><span 
class="n">get_type</span><span class="p">(</span><span 
class="o">&amp;</span><span class="n">schema</span><span 
class="p">).</span><span class="n">unwrap</span><span class="p">());</span>
+</pre></div>
+</div>
+<p>This results in the following output:</p>
+<div class="highlight-text notranslate"><div 
class="highlight"><pre><span></span>type = Float32
+</pre></div>
+</div>
+</section>
 <section id="conclusion">
 <h2>Conclusion<a class="headerlink" href="#conclusion" title="Link to this 
heading">¶</a></h2>
 <p>In this guide, we’ve seen how to create <code class="docutils literal 
notranslate"><span class="pre">Expr</span></code>s programmatically and how to 
rewrite them. This is useful for simplifying and optimizing <code 
class="docutils literal notranslate"><span class="pre">Expr</span></code>s. 
We’ve also seen how to test our rule to ensure it works properly.</p>
diff --git a/searchindex.js b/searchindex.js
index 5a64d1f8a5..c3f3184a27 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["contributor-guide/architecture", 
"contributor-guide/communication", "contributor-guide/index", 
"contributor-guide/quarterly_roadmap", "contributor-guide/roadmap", 
"contributor-guide/specification/index", 
"contributor-guide/specification/invariants", 
"contributor-guide/specification/output-field-name-semantic", "index", 
"library-user-guide/adding-udfs", "library-user-guide/building-logical-plans", 
"library-user-guide/catalogs", "library-user-guide/custom-tab [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["contributor-guide/architecture", 
"contributor-guide/communication", "contributor-guide/index", 
"contributor-guide/quarterly_roadmap", "contributor-guide/roadmap", 
"contributor-guide/specification/index", 
"contributor-guide/specification/invariants", 
"contributor-guide/specification/output-field-name-semantic", "index", 
"library-user-guide/adding-udfs", "library-user-guide/building-logical-plans", 
"library-user-guide/catalogs", "library-user-guide/custom-tab [...]
\ No newline at end of file

Reply via email to