我可以在 Foundry 的管道中获取同步文本文件的文件名吗?
Can I get the file names for synced text files in my pipeline in Foundry?
我有一堆从我的原始系统同步的文本文件,我想要一种在 Foundry 转换下游使用文件名(除了文件内容)的简单方法。
我知道这可以使用原始文件访问,但这看起来很复杂,我只想要数据旁边的文件名。
如果您要立即进入代码库或代码工作簿,则可以使用 input_file_name() function (see proggeo's answer )。这可能比下面的更简单,但如果您要对数据执行其他操作,则将不起作用。
架构方法
如果您打开数据集,然后转到详细信息 -> 架构,您可以编辑架构以添加文件路径列,对于每一行,这将具有该行来自的文件路径的值.
关键部分是fieldSchemaList
和customMetadata
下的"addFilePath": true
成员_filePath
。第一个是 TextDataFrameReader
用文件路径填充的特殊列,第二个告诉 reader 填充该列。下面示例中的另一列 (content
) 仅包含每个文件中的所有内容。
有关详细信息,请参阅平台文档 Foundry core backend
中的 Metadata
部分。对于具有不同 Reader 类.
的 csv 和更多结构化数据,这也是可能的
完整架构示例
{
"fieldSchemaList": [
{
"type": "STRING",
"name": "content",
"nullable": null,
"userDefinedTypeClass": null,
"customMetadata": {},
"arraySubtype": null,
"precision": null,
"scale": null,
"mapKeyType": null,
"mapValueType": null,
"subSchemas": null
},
{
"type": "STRING",
"name": "_filePath",
"nullable": null,
"userDefinedTypeClass": null,
"customMetadata": {},
"arraySubtype": null,
"precision": null,
"scale": null,
"mapKeyType": null,
"mapValueType": null,
"subSchemas": null
}
],
"dataFrameReaderClass": "com.palantir.foundry.spark.input.TextDataFrameReader",
"customMetadata": {
"textParserParams": {
"parser": "SINGLE_COLUMN_PARSER",
"nullValues": null,
"nullValuesPerColumn": null,
"charsetName": "UTF-8",
"addFilePath": true,
"addByteOffset": false,
"addImportedAt": false
}
}
}
仅当 dataFrameReaderClass 为 com.palantir.foundry.spark.input.TextDataFrameReader 时,ollie299792458 的响应才有效。
或者,您可以在使用 Spark input_file_name 函数读取代码库或工作簿中的数据集时获取文件名:
Creates a string column for the file name of the current Spark task.
我有一堆从我的原始系统同步的文本文件,我想要一种在 Foundry 转换下游使用文件名(除了文件内容)的简单方法。
我知道这可以使用原始文件访问,但这看起来很复杂,我只想要数据旁边的文件名。
如果您要立即进入代码库或代码工作簿,则可以使用 input_file_name() function (see proggeo's answer
架构方法
如果您打开数据集,然后转到详细信息 -> 架构,您可以编辑架构以添加文件路径列,对于每一行,这将具有该行来自的文件路径的值.
关键部分是fieldSchemaList
和customMetadata
下的"addFilePath": true
成员_filePath
。第一个是 TextDataFrameReader
用文件路径填充的特殊列,第二个告诉 reader 填充该列。下面示例中的另一列 (content
) 仅包含每个文件中的所有内容。
有关详细信息,请参阅平台文档 Foundry core backend
中的 Metadata
部分。对于具有不同 Reader 类.
完整架构示例
{
"fieldSchemaList": [
{
"type": "STRING",
"name": "content",
"nullable": null,
"userDefinedTypeClass": null,
"customMetadata": {},
"arraySubtype": null,
"precision": null,
"scale": null,
"mapKeyType": null,
"mapValueType": null,
"subSchemas": null
},
{
"type": "STRING",
"name": "_filePath",
"nullable": null,
"userDefinedTypeClass": null,
"customMetadata": {},
"arraySubtype": null,
"precision": null,
"scale": null,
"mapKeyType": null,
"mapValueType": null,
"subSchemas": null
}
],
"dataFrameReaderClass": "com.palantir.foundry.spark.input.TextDataFrameReader",
"customMetadata": {
"textParserParams": {
"parser": "SINGLE_COLUMN_PARSER",
"nullValues": null,
"nullValuesPerColumn": null,
"charsetName": "UTF-8",
"addFilePath": true,
"addByteOffset": false,
"addImportedAt": false
}
}
}
仅当 dataFrameReaderClass 为 com.palantir.foundry.spark.input.TextDataFrameReader 时,ollie299792458 的响应才有效。
或者,您可以在使用 Spark input_file_name 函数读取代码库或工作簿中的数据集时获取文件名:
Creates a string column for the file name of the current Spark task.