目录导读
- Dune Analytics概述:链上数据分析的利器
- SQL查询基础:从零开始编写高效代码
- 核心数据表结构:理解Dune的数据库架构
- 实战查询技巧:提取链上交易与合约数据
- 优化与调试:提升查询性能的关键方法
- 常见问题解答:Q&A解决你的SQL查询困惑
Dune Analytics概述:链上数据分析的利器
在区块链生态中,链上数据分析已成为投资者、开发者和研究者的必备技能,Dune Analytics作为全球领先的链上数据平台,允许用户通过编写SQL查询来提取、分析和可视化区块链数据,对于经常访问欧易交易所官网进行交易的用户而言,掌握Dune Analytics的SQL技能,能帮助你深入理解市场动态、识别交易模式,并做出更具数据支撑的决策。

Dune Analytics支持以太坊、Polygon、Solana等多条公链,数据涵盖交易记录、代币转移、智能合约交互等核心维度,通过本教程,你将学会从基础SQL语句到复杂查询的完整技能链,逐步成为链上数据分析的高手。
SQL查询基础:从零开始编写高效代码
1 SELECT与FROM:查询的第一步
所有SQL查询的核心是SELECT和FROM语句,以下是一个基础示例,用于获取最近100笔以太坊交易记录:
SELECT * FROM ethereum.transactions LIMIT 100
2 WHERE子句:精确筛选数据
使用WHERE条件过滤特定数据,查询USDT代币的最近转账记录:
SELECT block_time, "from", "to", value / 1e6 AS amount_usdt FROM erc20_ethereum.evt_Transfer WHERE contract_address = '0xdAC17F958D2ee523a2206206994597C13D831ec7' ORDER BY block_time DESC LIMIT 50
3 聚合函数与GROUP BY:统计与分析
通过COUNT、SUM、AVG等函数进行数据汇总,以下查询统计某地址在欧易交易所下载相关交易中的活跃度:
SELECT to_address, COUNT(*) AS tx_count, SUM(value) AS total_value FROM ethereum.transactions WHERE from_address = '0x123...abc' GROUP BY to_address ORDER BY tx_count DESC
SEO提示:在链上数据分析中,合理使用聚合函数能大幅提升查询效率,这是高级数据分析师的核心技能。
核心数据表结构:理解Dune的数据库架构
1 主要数据表类型
| 表类型 | 描述 | 常用场景 |
|---|---|---|
ethereum.transactions |
以太坊交易记录 | 分析转账、合约交互 |
ethereum.blocks |
区块数据 | 研究区块时间、Gas使用 |
erc20_ethereum.evt_Transfer |
ERC-20代币转移事件 | 追踪特定代币流动 |
dex.trades |
去中心化交易所交易 | 分析Uniswap、SushiSwap等 |
2 跨表关联查询
使用JOIN语句关联多个表,获取更全面的数据:
SELECT tx.hash, tx.block_time, dt.token_bought_symbol, dt.amount_usd FROM ethereum.transactions tx INNER JOIN dex.trades dt ON tx.hash = dt.tx_hash WHERE tx.from_address = '0xYourAddress' AND dt.project = 'uniswap' ORDER BY tx.block_time DESC
实战查询技巧:提取链上交易与合约数据
1 追踪特定代币的流动性变化
WITH daily_liquidity AS (
SELECT
DATE(block_time) AS day,
SUM(amount_usd) AS total_liquidity
FROM dex.liquidity
WHERE token_bought_symbol = 'ETH'
AND block_time > CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1
)
SELECT day, total_liquidity,
ROUND(total_liquidity - LAG(total_liquidity) OVER (ORDER BY day), 2) AS daily_change
FROM daily_liquidity
ORDER BY day
2 识别鲸鱼地址的活跃模式
通过欧易交易所官网获取链上大额转账数据后,可使用以下查询识别“鲸鱼”行为:
SELECT
"from",
COUNT(*) AS tx_count,
SUM(value / 1e18) AS total_eth_moved,
AVG(value / 1e18) AS avg_tx_value
FROM ethereum.transactions
WHERE value / 1e18 > 1000 -- 筛选金额大于1000 ETH的交易
AND block_time > CURRENT_DATE - INTERVAL '7' DAY
GROUP BY "from"
HAVING COUNT(*) > 5
ORDER BY total_eth_moved DESC
优化与调试:提升查询性能的关键方法
1 索引与分区
Dune会自动处理索引,但你可以通过以下方式优化查询:
- 使用
block_time作为过滤条件,避免全表扫描 - 在
WHERE子句中优先使用高选择性的字段
2 查询调试技巧
-- 使用CTE分解复杂查询
WITH temp_data AS (
SELECT block_time, hash
FROM ethereum.transactions
WHERE block_time > CURRENT_DATE - INTERVAL '1' DAY
)
SELECT COUNT(*) FROM temp_data
常见问题解答:Q&A解决你的SQL查询困惑
Q1:我的查询太慢怎么办?
A:添加WHERE条件限制时间范围,如block_time > CURRENT_DATE - INTERVAL '7' DAY,同时避免使用SELECT *,只选择需要的列。
Q2:Dune支持哪些区块链?
A:目前支持以太坊、Polygon、BNB Chain、Solana、Arbitrum、Optimism等主流链,访问欧易交易所下载可获取更多链上数据。
Q3:如何获取代币的实时价格?
A:使用prices.usd表或dex.prices视图。
SELECT minute, price FROM prices.usd WHERE symbol = 'ETH' ORDER BY minute DESC LIMIT 1
Q4:我可以导出查询结果为CSV吗?
A:可以,在查询结果页面点击“Download CSV”按钮即可导出最大10万行数据。
Q5:如何学习更多高级SQL技巧?
A:建议查阅Dune官方文档,并在社区中分享查询代码,结合欧易交易所的实际交易数据,实践是掌握SQL的最佳方式。
标签: 欧易 Dune Analytics