> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chaintable.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Indexing 概览

> 一条索引管道由什么组成，什么时候该用它。

Indexing 解决的是这件事：**链上原始数据不是你想要的形状，你需要把它加工成自己的业务表，并且一直保持更新。**

<Note>
  本章正在编写中。本页给出整体形态，各步骤的详细指南会陆续补齐。
</Note>

## 一条管道长什么样

```mermaid theme={null}
flowchart LR
    A["源表<br/>chain.event.eth"] -->|"每个新块的数据"| B["Function<br/>你的转换逻辑"]
    B -->|"返回的每一行"| C["目标表<br/>你的业务表"]
    D["Notebook<br/>驱动"] -.->|"盯新块、提交任务"| B
    E["Schedule"] -.->|"拉起"| D
```

四个角色：

| 角色           | 职责                                           |
| ------------ | -------------------------------------------- |
| **源表**       | 数据从哪来。通常是平台的公共表，也可以是你自己的表。                   |
| **Function** | 一行进、一行出的转换逻辑。返回 dict 就写入目标表，返回 `None` 就丢弃这行。 |
| **目标表**      | 加工结果存哪。                                      |
| **Notebook** | 驱动。盯着源表的新块，每来一个块就组装一个任务提交给平台。                |

## 建一条管道要做四步

<Steps>
  <Step title="建表">
    定义目标表的类型和列。表类型的选择取决于你的数据是「状态」还是「事件」。

    [选哪种表类型 →](/indexing/tables/types)
  </Step>

  <Step title="写 Function">
    用 Python 描述一行数据怎么变成另一行。可以用 Test Case 单独调试，不用跑整条管道。

    [Function 是什么 →](/indexing/functions/overview)
  </Step>

  <Step title="写 Notebook 驱动">
    订阅源表的新块，为每个块提交一个计算任务。

    [Notebook 是什么 →](/indexing/notebooks/overview)
  </Step>

  <Step title="挂上调度">
    让它常驻运行，或者按固定周期跑。

    [调度：常驻 / 定时 / 手动 →](/indexing/run/schedule)
  </Step>
</Steps>

## 什么时候不该用它

<Warning>
  **只是想查数据，不要建管道。**

  如果你的需求是「看看某个地址的交易」「统计一下昨天的 gas 消耗」，直接去[数据目录 → 数据分析](/data-catalog/analytics/overview)写 SQL 查现成的公共表就行。

  建管道是为了**持续产出**一张会一直更新、能被下游依赖的业务表。一次性的分析需求用不上。
</Warning>

## 典型场景

<Columns cols={2}>
  <Card title="代币转账明细" icon="arrow-left-right">
    解析转账事件，把发送方、接收方、金额写进明细表。
  </Card>

  <Card title="NFT 流转记录" icon="image">
    捕获铸造和转移事件，按合集和 token ID 组织成完整的流转历史。
  </Card>

  <Card title="余额快照" icon="camera">
    余额变化时读取当前状态，构建一张任意历史高度都能查的余额表。
  </Card>

  <Card title="流动性追踪" icon="droplets">
    DeFi 协议事件触发时读取池子储备，追踪流动性随时间的变化。
  </Card>
</Columns>
