我已经查看了一些有关如何在创建azure blob时指定自定义文件夹路径的帖子和文档(使用azure数据工厂)。
官方文件:
论坛帖子:
https://dba.stackexchange.com/questions/180487/datafactory-tutorial-blob-does-not-exist
我已经成功地将索引文件夹放入日期,但是我无法做的是放入递增/递减的日期文件夹。
我尝试使用$$ Text.Format(如下所示),但它给出了编译错误 - > Text.Format不是有效的blob路径。
"folderPath": "$$Text.Format('MyRoot/{0:yyyy/MM/dd}/', Date.AddDays(SliceEnd,-2))",
我尝试使用PartitionedBy部分(如下所示),但它也给出了编译错误 - >只有SliceStart和SliceEnd是“date”的有效选项
{
"name": "MyBlob",
"properties": {
"published": false,
"type": "AzureBlob",
"linkedServiceName": "MyLinkedService",
"typeProperties": {
"fileName": "MyTsv.tsv",
"folderPath": "MyRoot/{Year}/{Month}/{Day}/",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "\t",
"nullValue": ""
},
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "Date.AddDays(SliceEnd,-2)",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "Date.AddDays(SliceEnd,-2)",
"format": "MM"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "Date.AddDays(SliceEnd,-2)",
"format": "dd"
}
}
]
},
"availability": {
"frequency": "Day",
"interval": 1
},
"external": false,
"policy": {}
}
任何指针都表示赞赏!
我还根据Adam的建议直接在FileName中使用了文件夹结构,如下面的论坛帖子所示:
Windows Azure: How to create sub directory in a blob container
我在下面的样本中使用它。
"typeProperties": {
"fileName": "$$Text.Format('{0:yyyy/MM/dd}/MyBlob.tsv', Date.AddDays(SliceEnd,-2))",
"folderPath": "MyRoot/",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "\t",
"nullValue": ""
},
它不会产生编译错误,也不会在部署期间出错。但它在执行期间抛出错误!!
运行时错误是--->活动错误:ScopeJobManager:PrepareScopeScript,不支持的非结构化流格式'.adddays(sliceend,-2))',无法转换为非结构化流。
我认为问题在于FileName可用于创建文件夹但不能用于动态文件夹名称,只能用于静态文件夹名称。
答案 0 :(得分:0)
你应该使用以下约定创建一个blob:“foldername / myfile.txt”,这样你也可以在该foldername下追加额外的blob。我建议检查这个帖子:Windows Azure: How to create sub directory in a blob container,它可以帮助你解决这个问题。