我有几个数据集,我想在Palantir铸造联合。我提前知道数据集是什么。所有数据集的模式是相同的(即它们具有相同的列名和列类型)。
组合(union)这些数据集的最佳方法是什么?
数据集:
您可以使用数据集视图。数据集视图是一个Palantir Foundry数据集,它不包含任何包含数据的文件,但在读取时由其他数据集(称为备份数据集)的联合组成。这意味着构建视图非常快,并且视图是有效的空间,因为它们不复制数据。
创建视图:
- 浏览到你想创建视图
- 点击绿色的
+ New
按钮,在下拉菜单中选择'View' - 在新创建的视图中,查看"Details"选项卡。
- 单击
+ Add backing dataset
按钮并添加您想要合并的数据集
您可以使用视图,就好像它是数据集联合的结果。例如,您可以将其用作轮廓分析的底层数据集或支持本体对象。
关于Views的更多文档可以在Foundry平台内文档中找到,通过搜索'Views'产品。
要在Python转换中使用Foundry Code Repositories或Code Workbook中的两个数据集,您可以使用PySpark的unionByName
函数:
from transforms.api import transform_df, Input, Output
@transform_df(
Output("/path/to/dataset/unioned"),
source_df_1=Input("/path/to/dataset/one"),
source_df_2=Input("/path/to/dataset/two"),
)
def compute(source_df_1, source_df_2):
return source_df_1.unionByName(source_df_2)
要在Python转换中使用Foundry Code Repositories或Code Workbook中的多个数据集,您可以使用转换动词帮助器D.union_many
:
from transforms.api import transform_df, Input, Output
from transforms.verbs import dataframes as D
@transform_df(
Output("/path/to/dataset/unioned"),
source_df_1=Input("/path/to/dataset/one"),
source_df_2=Input("/path/to/dataset/two"),
source_df_3=Input("/path/to/dataset/three"),
)
def compute(source_df_1, source_df_2, source_df_3):
return D.union_many(
source_df_1,
source_df_2,
source_df_3,
)