hanalyze-0.2.0.0: src/Hanalyze/DataIO/External.hs
{-# LANGUAGE OverloadedStrings #-}
-- |
-- Module : Hanalyze.DataIO.External
-- Description : Hackage dataframe 経由の Parquet / JSON 外部フォーマットローダ
-- Copyright : (c) 2026 Aelysce Project (Toshiaki Honda)
-- License : BSD-3-Clause
--
-- External data-format loaders (Parquet / JSON) via the Hackage
-- @dataframe@ library.
--
-- Returns Hackage's 'DataFrame.Internal.DataFrame.DataFrame' directly.
-- For CSV and TSV use 'Hanalyze.DataIO.CSV.loadCSV' / @loadTSV@ instead.
module Hanalyze.DataIO.External
( loadParquet
, loadJSON
) where
import qualified DataFrame.IO.Parquet as DX
import qualified DataFrame.Internal.DataFrame as DXD
import qualified DataFrame.IO.JSON as DXJ
import Control.Exception (SomeException, try)
-- | Load an Apache Parquet file (columnar, supports compression).
loadParquet :: FilePath -> IO (Either String DXD.DataFrame)
loadParquet = loadRaw DX.readParquet
-- | Load a JSON file in records-of-objects format.
loadJSON :: FilePath -> IO (Either String DXD.DataFrame)
loadJSON = loadRaw DXJ.readJSON
loadRaw :: (FilePath -> IO DXD.DataFrame)
-> FilePath -> IO (Either String DXD.DataFrame)
loadRaw reader path = do
result <- try (reader path) :: IO (Either SomeException DXD.DataFrame)
return $ case result of
Left e -> Left ("External loader failed: " ++ show e)
Right df -> Right df