这是将数据从 Azure Blob 存储或 Azure Data Lake Storage 复制到 ClickHouse 的最高效、最直接的方法之一。使用此表函数,您可以让 ClickHouse 直接连接到 Azure 存储,并按需读取数据。
它提供了类似表的接口,使您能够直接从源中选择、插入和过滤数据。该函数经过高度优化,支持许多常用文件格式,包括 CSV、JSON、Parquet、Arrow、TSV、ORC、Avro 等。完整列表请参见 "数据格式"。
在本节中,我们将通过一个简单的入门指南,介绍如何将数据从 Azure Blob 存储传输到 ClickHouse,以及有效使用此函数时需要注意的重要事项。有关更多详细信息和高级选项,请参阅官方文档:
azureBlobStorage 表函数文档页面
获取 Azure Blob 存储访问密钥
要让 ClickHouse 访问你的 Azure Blob 存储,你需要一个包含访问密钥的连接字符串。
-
在 Azure 门户中,进入你的 存储帐户。
-
在左侧菜单中,选择 安全 + 网络 部分下的 访问密钥。

-
选择 key1 或 key2,然后点击 连接字符串 字段旁边的 显示 按钮。

-
复制该连接字符串——你将在 azureBlobStorage 表函数中将其用作参数。
从 Azure Blob 存储查询数据
打开您常用的 ClickHouse 查询控制台——可以是 ClickHouse Cloud Web 界面、ClickHouse 命令行客户端,或任何其他用于运行 查询的工具。准备好连接字符串和 ClickHouse 查询 控制台后,您就可以开始直接从 Azure Blob 存储查询数据。
在下面的示例中,我们将查询位于名为 data-container 的 容器中的 JSON 文件里存储的全部数据:
SELECT * FROM azureBlobStorage(
'<YOUR CONNECTION STRING>',
'data-container',
'*.json',
'JSONEachRow');如果你想把这些数据复制到本地 ClickHouse 表中 (例如 my_table) ,
可以使用 INSERT INTO ... SELECT 语句:
INSERT INTO my_table
SELECT * FROM azureBlobStorage(
'<YOUR CONNECTION STRING>',
'data-container',
'*.json',
'JSONEachRow');这样你就能高效地将外部数据导入 ClickHouse,而无需 经过中间的 ETL 步骤。
使用 Environmental Sensors 数据集的简单示例
作为示例,我们将从 Environmental Sensors 数据集中下载一个文件。
-
在 Azure 门户中,如果你还没有存储帐户,请新建一个存储帐户。
-
在你的存储帐户中创建一个新容器。在本示例中,我们将其命名为 sensors。 如果你使用的是现有容器,则可以跳过此步骤。
-
将之前下载的
2019-06_bmp180.csv.zst文件上传到该 容器。 -
按照前文所述的步骤,获取 Azure Blob 存储 连接字符串。
完成以上设置后,你就可以直接从 Azure Blob 存储查询数据:
SELECT *
FROM azureBlobStorage(
'<YOUR CONNECTION STRING>',
'sensors',
'2019-06_bmp180.csv.zst',
'CSVWithNames')
LIMIT 10
SETTINGS format_csv_delimiter = ';'- 要将数据加载到表中,请创建原始数据集中所用
schema 的简化版本:
CREATE TABLE sensors ( sensor_id UInt16, lat Float32, lon Float32, timestamp DateTime, temperature Float32 ) ENGINE = MergeTree ORDER BY (timestamp, sensor_id);
- 现在将 Azure Blob 存储中的数据插入 sensors 表:
INSERT INTO sensors SELECT sensor_id, lat, lon, timestamp, temperature FROM azureBlobStorage( '<YOUR CONNECTION STRING>', 'sensors', '2019-06_bmp180.csv.zst', 'CSVWithNames') SETTINGS format_csv_delimiter = ';'
现在,sensors 表中已包含存储在 Azure Blob 存储中的 2019-06_bmp180.csv.zst
文件数据。
其他资源
这只是对如何使用 azureBlobStorage 函数的基础介绍。有关
更多高级选项和配置细节,请参阅官方
文档: