创建的外部表中的文件路径在数据库刷新后每天都会更改

问题描述 投票:0回答:1

我已在 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'

我希望有人能告诉我一种无需使用管道即可解决此问题的方法?

sql t-sql azure-synapse
1个回答
0
投票

将BULK存储路径更改为

https://XName.dfs.core.windows.net/abc/tables/SomeFileName/
。然后,
select
查询将从该文件夹中的所有文件返回数据,因此我想您将需要一种方法来过滤结果。

© www.soinside.com 2019 - 2024. All rights reserved.