microsoft/graphrag · error · ValueError
Could not find {filename} in storage!
Error message
Could not find {filename} in storage! What it means
ParquetTableProvider.read_dataframe maps table_name to '{table_name}.parquet' and checks storage.has() before reading; a missing file raises ValueError with the resolved filename. This is the parquet analogue of the CSV provider's missing-table error and fires before pandas parquet parsing is attempted.
Source
Thrown at packages/graphrag-storage/graphrag_storage/tables/parquet_table_provider.py:62
table_name: str
The name of the table to read. The file will be accessed as '{table_name}.parquet'.
Returns
-------
pd.DataFrame:
The table data loaded from the Parquet file.
Raises
------
ValueError:
If the table file does not exist in storage.
Exception:
If there is an error reading or parsing the Parquet file.
"""
filename = f"{table_name}.parquet"
if not await self._storage.has(filename):
msg = f"Could not find {filename} in storage!"
raise ValueError(msg)
try:
logger.info("reading table from storage: %s", filename)
return pd.read_parquet(
BytesIO(await self._storage.get(filename, as_bytes=True))
)
except Exception:
logger.exception("error loading table from storage: %s", filename)
raise
async def write_dataframe(self, table_name: str, df: pd.DataFrame) -> None:
"""Write a pandas DataFrame to storage as a Parquet file.
Args
----
table_name: str
The name of the table to write. The file will be saved as '{table_name}.parquet'.
df: pd.DataFrame
The DataFrame to write to storage.View on GitHub (pinned to f40e9a26ce)
Solutions
- Run graphrag index to produce parquet outputs
- Verify base_dir/root and confirm output/<table>.parquet exists
- Check the table name against the pipeline's output table configuration
Example fix
# before
df = await provider.read_dataframe("create_base_entities")
# after
# ensure output/create_base_entities.parquet exists (run indexing first)
df = await provider.read_dataframe("create_base_entities") Defensive patterns
Strategy: try-catch
Validate before calling
if not await provider._storage.has(f"{table_name}.parquet"):
raise RuntimeError(f"missing output table: {table_name}.parquet") Try / catch
try:
df = await provider.read_dataframe(t)
except ValueError as e:
if "Could not find" in str(e):
logger.warning("%s not indexed yet", t)
df = pd.DataFrame()
else:
raise Prevention
- Verify parquet outputs exist after indexing
- Keep indexer and reader on the same storage config
When it happens
Trigger: Awaiting read_dataframe('output_table') when <base>/<table>.parquet is absent — unindexed dataset, wrong base_dir, or outputs stored in a different storage account/container.
Common situations: Running the query/update engine before indexing finishes; wrong --root; local vs deployed storage divergence; table renamed between versions so the old name no longer exists.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- Could not find {filename} in storage!
- CosmosTableProvider requires 'database_name'.
- CosmosTableProvider requires 'container_name'.
- Specify either 'connection_string' or 'account_url', not bot
- CosmosTableProvider requires 'connection_string' or 'account
AI-assisted analysis of microsoft/graphrag@f40e9a26ce (2026-08-27).
Data as JSON: /api/errors/38ba502090ffbf7f.
Report an issue: GitHub.