我在创建Azure Blob时查看了一些有关如何指定自定义文件夹路径的文档(使用Azure数据工厂(。
官方文件:
https://learn.microsoft.com/en-us/azure/data-factory/v1/data-factory-azure-azure-blob-connector#used-partitioned by-property
论坛帖子:
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))",
我尝试使用分区的部分(如下(,但它也给出了编译错误 ->只有Slicestart和Sliceend是"日期"
的有效选项 {
"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的建议,我还直接在文件名中使用了文件夹结构:
Windows Azure:如何在Blob容器中创建子目录
我在下面的样本中使用了它。
"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:preparescopecript,无支撑的非结构流格式'.addays(sliceend,-2((',无法转换为非结构化流。
我认为问题是文件名可用于创建文件夹而不是动态文件夹名称,而不是静态文件夹。
您应该使用以下约定创建一个斑点:" foldername/myfile.txt",因此您还可以在该foldername下附加附加斑点。我建议检查此线程:Windows Azure:如何在Blob容器中创建子目录,它可能会帮助您解决此情况。