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">"c1"</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">"c2"</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">"c1"</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">"c2"</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">"type = {}"</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">&</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