使用 ClickHouse 的 azureBlobStorage 表函数
这是将数据从 Azure Blob Storage 或 Azure Data Lake Storage 复制到 ClickHouse 的最高效且最直接的方法之一。通过此表函数,可以让 ClickHouse 直接连接到 Azure 存储并按需读取数据。
它提供类似表的接口,使可以直接从数据源执行 SELECT、INSERT 和过滤操作。该函数经过高度优化,支持许多广泛使用的文件格式,包括 CSV、JSON、Parquet、Arrow、TSV、ORC、Avro 等。完整列表请参见 "Data formats"。
在本节中,我们将通过一个从 Azure Blob Storage 向 ClickHouse 传输数据的简单入门示例进行讲解,并介绍高效使用此函数时需要注意的重要事项。有关更多细节和高级选项,请参阅官方文档:
azureBlobStorage Table Function 文档页面
获取 Azure Blob Storage 访问密钥
要允许 ClickHouse 访问 Azure Blob Storage,您需要一个包含访问密钥的连接字符串。
-
在 Azure 门户中,导航到您的 Storage Account。
-
在左侧菜单的 Security + networking 部分下选择 Access keys。

-
选择 key1 或 key2,然后单击 Show 按钮(位于 Connection string 字段旁边)。

-
复制该连接字符串——您将在
azureBlobStorage表函数中将其作为参数使用。
从 Azure Blob Storage 查询数据
打开常用的 ClickHouse 查询控制台——可以是 ClickHouse Cloud Web 界面、ClickHouse CLI 客户端,或任何用于运行查询的工具。准备好连接字符串和 ClickHouse 查询控制台之后,就可以开始直接从 Azure Blob Storage 查询数据。
在下面的示例中,我们查询存储在名为 data-container 的容器中、所有 JSON 文件里的数据:
如果您想将这些数据复制到本地 ClickHouse 表(例如 my_table)中,
可以使用一条 INSERT INTO ... SELECT 语句:
这使得可以高效地将外部数据导入 ClickHouse,而无需经过中间的 ETL 步骤。
使用 Environmental Sensors 数据集的简单示例
作为示例,我们将从 Environmental Sensors 数据集中下载一个文件。
-
从 Environmental Sensors 数据集
下载一个示例文件。 -
在 Azure 门户中创建一个新的存储账户(如果尚未创建)。
请确保已为存储账户启用 Allow storage account key access,否则将无法使用账户密钥访问数据。
-
在存储账户中创建一个新的容器。在本示例中,我们将其命名为 sensors。 如果您使用的是现有容器,则可以跳过此步骤。
-
将之前下载的
2019-06_bmp180.csv.zst文件上传到该容器。 -
按照前文描述的步骤获取 Azure Blob Storage 连接字符串。
现在一切就绪,您可以直接从 Azure Blob Storage 查询数据:
- 要将数据加载到表中,请创建原始数据集所使用 schema 的简化版本:
有关在查询 Azure Blob Storage 等外部数据源时的配置选项和 schema 推断的更多信息,请参阅从输入数据自动推断 schema
- 现在将 Azure Blob Storage 中的数据插入到 sensors 表中:
存储在 Azure Blob Storage 中的 2019-06_bmp180.csv.zst 文件数据现已写入 sensors 表。
其他资源
这只是对 azureBlobStorage 函数的基本介绍。要了解更高级的选项和配置细节,请参阅官方文档: