Hyperliquid trades from the HyperCore L1 order-book exchange, not HyperEVM. The trades table has one row per side of each match with price, size, direction, a taker flag, fees and the realized PnL of the fill, so maker and taker attribution and per-wallet PnL come straight out of the file. Liquidation fills sit in their own table, perp_liquidations, with the liquidated account, mark price and method, and twaps records each TWAP order as it activates, runs and finishes.
A match appears twice, once per side, keyed by (Block_Number, Trade_Market_CoinRaw, Trade_Execution_Tid); the hash is not a join key because one L1 transaction spans many matches and TWAP fills carry 32 zero bytes. Money and sizes are decimal strings, addresses are 0x-prefixed hex, and Trade_Execution_EventTime is epoch milliseconds while Block_Time is epoch nanoseconds.