Skip to main content

datafusion_spark/function/map/
mod.rs

1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements.  See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership.  The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License.  You may obtain a copy of the License at
8//
9//   http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied.  See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18pub mod map_from_arrays;
19pub mod map_from_entries;
20pub mod str_to_map;
21mod utils;
22
23use datafusion_expr::ScalarUDF;
24use datafusion_functions::make_udf_function;
25use std::sync::Arc;
26
27make_udf_function!(map_from_arrays::MapFromArrays, map_from_arrays);
28make_udf_function!(map_from_entries::MapFromEntries, map_from_entries);
29make_udf_function!(str_to_map::SparkStrToMap, str_to_map);
30
31pub mod expr_fn {
32    use datafusion_functions::export_functions;
33
34    export_functions!((
35        map_from_arrays,
36        "Creates a map from arrays of keys and values.",
37        keys values
38    ));
39
40    export_functions!((
41        map_from_entries,
42        "Creates a map from array<struct<key, value>>.",
43        arg1
44    ));
45
46    export_functions!((
47        str_to_map,
48        "Creates a map after splitting the text into key/value pairs using delimiters.",
49        text pair_delim key_value_delim
50    ));
51}
52
53pub fn functions() -> Vec<Arc<ScalarUDF>> {
54    vec![map_from_arrays(), map_from_entries(), str_to_map()]
55}