我已在 AzureDataLakeStorageGen2 的 Azure Synapse Analytics 中创建了一个外部表。
然后我在另一个 SQL 查询中使用外部表中的数据。
当我运行命令时,正在创建表,并且 SELECT 语句工作正常。
其他 SQL 查询也工作正常。
问题是,在一夜之间刷新数据库后,我用来创建外部表的文件路径发生了变化,并且相关的报告/sql查询返回错误,这是正常的(文件路径在BULK参数中提供) OPENROWSET 函数)。
请看下面的代码:
CREATE EXTERNAL TABLE reports.FileIamCreating
WITH
(
LOCATION ='/reports/CreatedFleName/',
DATA_SOURCE = AzureDataLakeStorageGen2,
FILE_FORMAT = csv
)
AS
SELECT
Reference,
CAST('250.00' AS FLOAT) AS [Invoiced costs]
FROM
OPENROWSET(
BULK 'https://XName.dfs.core.windows.net/abc/tables/SomeFileName/F090863C-41D9-4022-A5D1-B40353F1478A_156134_0-1.csv',
FORMAT = 'CSV',
HEADER_ROW = TRUE,
PARSER_VERSION = '2.0'
) AS tbl1
WHERE Reference IN (
'100725',
'107575',
'107707',
'108771')
我注意到每天都在变化的是 SomeFileName/..... 之后的字符串(我认为是文件名) OPENROWSET 函数的 BULK 参数中提供的信息。 ....批量'https://XName.dfs.core.windows.net/abc/tables/SomeFileName/F096663C-41K9-4022-A5D1-B40353ZZZZZ_156884_0-1.csv'
我希望有人能告诉我一种无需使用管道即可解决此问题的方法?
将BULK存储路径更改为
https://XName.dfs.core.windows.net/abc/tables/SomeFileName/
。然后,select
查询将从该文件夹中的所有文件返回数据,因此我想您将需要一种方法来过滤结果。