从0到1构建你的Dune Analytics看板(实战篇)

写在前边

本篇内容主要是一步一步地说明构建一个看板的过程,做一个整理钱包行为与以太坊币价关系的分析看板,以孙哥钱包(0x3ddfa8ec3052539b6c9549f12cea2c295cff5296)为例

有任何问题或者建议欢迎DM Twitter@Pro_0xBi


一、我想看哪些数据?

我们观察整理钱包的行为其实就是看钱包跟交易所之前的充提行为。但是有的时候整理钱包并不会直接整理到交易所,有可能中转一下再进入交易所。所以理论用一个钱包以及他的所有关联钱包作为一个集合来观察这个行为会比较合适。这里我们做1个简化:以孙哥为例,做一个钱包转入、转出ETH的行为与ETH价格之间的关系的分析。

另外

如果你想按照相对严谨的计算口径做分析,我这里提供两个可能有用的东西

1.这个Query可以用来取某一个钱包的疑似关联钱包,里边的逻辑可以跟自己需要做调整

(查找跟这个钱包有ETH转入转出关系的所有钱包,累积转入或者转出需要超过100ETH)

2.如果你要看充提交易所的行为,那需要首先有交易所的地址。我自己整理了一批交易所标签,可以按照如下方式取到

select
  "address"
from  dune_user_generated.pro_0xBi_address_label_dim 
where  cate in ('Exchange地址')
group by
  "address"

二、怎么确定数据源在哪以及SQL的计算口径?

简单来讲我们需要2个数据

  • ETH Transfer数据
  • ETH 价格数据

1.确定ETH Transfer的计算口径

首先ETH Transfer数据,其实我也不知道怎么算。我之前算ERC20的数据比较多,但是纯ETH的数据还真没算过,一般这种情况下我会有几个解决方案:

1.去官网Discover板块搜关键词,看看别人是怎么写的,比如搜ETH Balance 、ETH Transfer 之类的。

2.官方文档里搜关键词

3.去Discord里问官方的工作人员

我自己首先试了试Discover板块搜ETH Balance(之所搜Balance是因为一般Balance是从明细聚合过来的,如果有Balance的计算口径,自己拆一下就成了Transfer数据)。发现刚好有人写过类似的逻辑就点进去看看

自己输入了几个地址跟区块链浏览器对比了一个看起来是没有问题的,然后就去点击具体的Query去看具体的计算逻辑

把SQL贴到编译器软件(我自己用的sublime)里,调整一下成自己习惯的缩进形式

大概读一下SQL的整体逻辑

  • 子查询1

    看起来是算了一个钱包所有的转账明细记录,子查询的结果可以从

    tbl_transactions_raw中取

  • 子查询2

    基于tbl_transactions_raw,将所有的转账的数值按天聚合(group by),子查询的结果可以从tbl_intermediate中取

  • 子查询3

    通过generate_series函数创建一个日期序列,然后left join 子查询2的结果tbl_intermediate,子查询的结果可以从tbl_output中取

  • 最终的Query

    从tbl_output中取所有列然后加一个2个时间变量(开始时间跟结束时间),这样Query可以选开始日期以及结束日期

SQL查询的结果如下图,可以发现几乎跟我们需要的一样的,那么研究清楚这个SQL基本上后续想算类似的数据都知道该怎么写了。这里我就不挨个部分解释了,大家自己研究吧,语法相关的东西非常多。总之ETH Transfer数据的计算逻辑搞定了。

2.确定ETH Price的计算口径

同样的方法你去Discover里搜 ETH Price ,也能找到别人写好SQL或者去官方DOC里搜索也能找到相关的计算口径。这里放个计算口径就不详细说了

--这里取了一个平均值
SELECT  date_trunc('day', minute) as day,
        AVG(price) as average
FROM prices."layer1_usd"
WHERE "symbol" = 'ETH' AND  date_trunc('day', minute) > date_trunc('day', now()) - interval '30 days'
GROUP BY 1
ORDER BY day DESC

3.根据确定的数据口径,写自己的SQL

参考以上口径,按照自己的缩进习惯以及字段命名写了整个的SQL,然后做简单的测试,随便找个钱包比如统计孙哥的钱包,随便去统计出来某一天的结果跟以太坊浏览器里的明细数据做比较看是否一致。

SQL的逻辑跟之前那个差不多,只不过我改成了我自己习惯的写法以及命名。

额外增加的是一个关于ETH Price价格的子查询以及在最终查询结果的时候left outer join ETH Price的字段

三、怎么基于Query结果配置可视化的图表?

1.做出单图

写好SQL后点击Run,过一会计算结果就会出来,然后你会发现下方有一个【New visualization】,选好使用的图表类型,点击【Add visualization】就可以产生一个可视化的图,可选的可视化图如下

  • Bar Chart 柱状图
  • Area Chart 面积图
  • Scatter Chart 散点图
  • LIne Chart 折线图
  • Pie Chart 饼图
  • Counter 数据块(单独一个方块,显示一个数据)
  • Table(纯表格)

如果选Bar Chart会出现如下的图,再往下是图的参数控制面板,我把常用的几个参数标了出来

这里需要用双轴模式,因为单轴的话以太坊价格的变化就不太明显了

,另外最好把价格调整成折线比较好(这里补充一个参数Chart Type,之前忘记说了,这个地方可以改图的类型),调整后的结果如下图所示。这样其实就比较明显了,可以发现孙哥整理钱包跟以太坊价格还是右非常明显的关系的,孙哥逃顶太稳了,或者说顶就是孙哥砸出来的🐶

2.形成Dashboard

单图做完后点击Add to Dashboard就可以把单图加入到某个Dashboard里。多个单图就组成了一个完整的Dashboard

点击Add按钮单图就加入了某个看板,如果没有任何看板可以点击New Dashboard创建(只需要输入Dashboard名称),然后再点击建好的Dashboard后边的【Add】

切换到My Creation,点击Dashboard就可以看到刚才创建的Dashboard

点击【Edit】进入编辑模式

完成需要的配置后点击【Done】,保存修改

以上就是做一个Dashiboard的全过程,其实主要的工作量都在确认SQL的计算口径以及验证数据准确性上,单纯可视化其实非常简单

Subscribe to 0xBi
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.