首页 > 解决方案 > 无法使用 ADX 外部表“虚拟列”访问 ADLS Gen 2 中的文件

问题描述

我在 Azure Data Lake Gen 2 中有一个简单的文件夹树,它按日期分区,具有以下标准文件夹结构:{yyyy}/{MM}/{dd}例如 /Container/folder1/sub_folder/2020/11/01

在每个叶子文件夹中,我有一些列数很少但没有时间戳的 CSV 文件(因为日期已经嵌入在文件夹名称中)。

我正在尝试创建一个包含日期虚拟列的 ADX 外部表,然后按日期查询 ADX 中的数据(这通常是 Hive 和大数据中众所周知的模式)。

.create-or-alter external table TableName (col1:double, col2:double, col3:double, col4:double) 
kind=adl
partition by (Date:datetime)
pathformat = ("/date=" datetime_pattern("year={yyyy}/month={MM}/day={dd}", Date))    
dataformat=csv 
( 
   h@'abfss://container@datalake_name.dfs.core.windows.net/folder1/subfolder/;{key}'
) 
with (includeHeaders = 'All')

不幸的是,查询表失败,并且显示工件返回一个空列表。

external_table("Table Name")
| take 10

.show external table Walmart_2141_OEE artifacts

除了以下例外:

Query execution has resulted in error (0x80070057): Partial query failure: The parameter is incorrect. (message: 'path2
Parameter name: Argument 'path2' failed to satisfy condition 'Can't append a full path': at Concat in C:\source\Src\Common\Kusto.Cloud.Platform\Utils\UriPath.cs: line 25: 

如文档中所述,我尝试遵循多种类型的路径格式和 datetime_pattern,但没有任何效果。

有任何想法吗?

标签: azure-data-explorerazure-data-lake-gen2adx

解决方案


根据您的描述,以下定义应该有效:

.create-or-alter external table TableName (col1:double, col2:double, col3:double, col4:double) 
kind=adl
partition by (Date:datetime)
pathformat = (datetime_pattern("yyyy/MM/dd", Date))    
dataformat=csv 
( 
   h@'abfss://container@datalake_name.dfs.core.windows.net/folder1/subfolder;{key}'
) 
with (includeHeaders = 'All')

推荐阅读