如何在Databricks中实现像ADF一样的列映射

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

如您所见,这是 ADF 中复制活动中数据类型的常规列映射,我们可以在其中将数据类型、列名称等从源更改为目标。

如果我想在databricks中进行相同的设置,就像我需要将Id列与CustomerID映射一样,如何实现这一点,因为我只知道如果架构匹配,如何从SQL服务器读取表以及如何将表写入SQL服务器。但这里我需要一个自定义映射,以便所有列都可以从源架构正确填充到目标架构。

我知道我可以在写入 Target 之前将列重命名为 Target。这是一种非常手动的方式,并且肯定需要一种更有效和自动化的方式,一种通用函数,以便我也可以将该函数用于所有其他表。

apache-spark pyspark azure-data-factory databricks azure-databricks
1个回答
0
投票

您可以按照以下步骤映射列并复制数据,如下所示:

这是我的示例源数据框:

id 名字 最后修改时间
1 AA 2024-04-10
2 BB 2024-04-11
3 抄送 2024-04-12

和示例目标数据框:

客户ID 姓氏 修改日期

您可以使用下面的代码来映射列并复制数据:

target_df = source_df \
    .withColumn("CustomerId", source_df["id"]) \
    .withColumn("lastname", source_df["name"]) \
    .withColumn("modified_date", source_df["lastmodified"]) \
    .drop("id", "name", "lastmodified")
 

或者:

target_df = source_df.select(
    source_df["id"].alias("CustomerId"),
    source_df["name"].alias("lastname"),
    source_df["lastmodified"].alias("modified_date")
)

上面的代码执行后,target_df如下:

客户ID 姓氏 修改日期
1 AA 2024-04-10
2 BB 2024-04-11
3 抄送 2024-04-12
© www.soinside.com 2019 - 2024. All rights reserved.