Spark sql 创建并引用映射/查找表,如 Qlik 的 applymap 函数

问题描述 投票:0回答:1

我正在使用 Azure Synapse Spark sql 笔记本,我有一个查找表,其中包含主表中 15 个代码字段的显示值。我希望避免将查找表连接到主表 15 次来查找每个代码字段的显示值。

在 Qlik 脚本中,我会将查找表作为两列映射表加载到内存中,然后我可以在字段表达式中使用 applymap() 函数来检索显示值。

我可以使用 SparkSQL 中的等效项吗?

apache-spark pyspark apache-spark-sql azure-synapse
1个回答
0
投票

您可以编写 Spark SQL 用户定义函数(UDF)来从查找表中检索显示值并填充主表中的字段。这样,我们就可以避免对所有表使用

join

示例用户定义函数:

这是用户定义的函数,它将

input_value
作为输入并返回
display_value
作为查找表的输出。

CREATE OR REPLACE FUNCTION get_display_value(input_value STRING)
RETURNS STRING
AS
BEGIN
  DECLARE display_value STRING;
  SET display_value = (SELECT display_value FROM lookup_table WHERE input_value = input_value);
  RETURN display_value;
END;

您可以在查询中使用

get_display_value(<column_name>)
来获取查找表值以及主表值。

© www.soinside.com 2019 - 2024. All rights reserved.