azure - Azure ADF v2-如何向部署到 Azure Data Lake 的文件名添加/附加时间戳
问题描述
我正在将文件部署到 azure datalake,但想将 datetime stamp 附加到 filename 。我创建了一个数据集并创建了一个值为 utcnow() 的参数。但是文件没有被部署并附加时间戳。
{
"name": "tst",
"properties": {
"linkedServiceName": {
"referenceName": "LS_ADLS_AzureDataLakeStoreLinkedService",
"type": "LinkedServiceReference"
},
"parameters": {
"customVariable": {
"type": "String",
"defaultValue": "utcnow()"
}
},
"type": "AzureDataLakeStoreFile",
"typeProperties": {
"format": {
"type": "TextFormat",
"columnDelimiter": "|",
"rowDelimiter": "",
"nullValue": "",
"treatEmptyAsNull": true,
"skipLineCount": 0,
"firstRowAsHeader": true
},
"fileName": "abc-{customVariable}",
"folderPath": "clusters/diageo-eun-analytics-nonprod-hdi-hd-nampolaris-dev01/hive/warehouse/Spirit_Deal/tst",
"partitionedBy": [
{
"name": "customVariable",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyyMMddHH"
}
}
]
}
},
"type": "Microsoft.DataFactory/factories/datasets"
}
但是文件名现在附带时间戳,即 abc-{customVariable}。请告诉如何在 ADV v2 中添加
解决方案
您绝对可以参数化文件名和路径。php。你试试@CONCAT。以下示例有效,展示了如何动态构建文件夹路径和文件名:
{
"name": "TgtADLSSQL",
"properties": {
"linkedServiceName": {
"referenceName": "Destination-DataLakeStore-gqf",
"type": "LinkedServiceReference"
},
"folder": {
"name": "Target"
},
"type": "AzureDataLakeStoreFile",
"typeProperties": {
"format": {
"type": "ParquetFormat"
},
"fileName": {
"value": "@CONCAT('Ingest_Date=', formatDateTime(trigger().startTime, 'yyyy-MM-dd/'),'Incremental-', pipeline().RunId, '.snappy.parquet')",
"type": "Expression"
},
"folderPath": {
"value": "/data/raw/corporate/sql/@{item().TABLE_NAME}",
"type": "Expression"
}
}
},
"type": "Microsoft.DataFactory/factories/datasets"
}
另请参阅ADF V2 中的动态文件夹。
推荐阅读
- python - Python POST 请求直到在谷歌应用引擎上等待超时时间后才会发送请求
- lucee - Coldfusion 无法将日期类型插入 MySQL
- java - 如何防止窗格交叉阻塞另一个窗格?javafx
- accessibility - UIBarButton 中的可访问性用户输入标签
- django - AttributeError:“帐户”对象没有属性“排除”
- javascript - 向我的端点发送获取请求时得到 [object Promise]
- angular - 如何使用角度 9 反应形式的复选框从多选框中选择所有选项
- r - 在 for 循环中更改列表中的列名
- helidon - helidon 是否支持 HTTP2?
- ruby-on-rails - `rails new` 不使用 rbenv 和 `ruby -v` 的 ruby 版本,而 rails s 抛出“您的 Ruby 版本是 2.6.3,但您的 Gemfile 指定了 2.7.2”