{"record":{"id":"38ba502090ffbf7f","repo":"microsoft/graphrag","slug":"could-not-find-filename-in-storage-38ba50","errorCode":null,"errorMessage":"Could not find {filename} in storage!","messagePattern":"Could not find (.+?) in storage!","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"packages/graphrag-storage/graphrag_storage/tables/parquet_table_provider.py","lineNumber":62,"sourceCode":"            table_name: str\n                The name of the table to read. The file will be accessed as '{table_name}.parquet'.\n\n        Returns\n        -------\n            pd.DataFrame:\n                The table data loaded from the Parquet file.\n\n        Raises\n        ------\n            ValueError:\n                If the table file does not exist in storage.\n            Exception:\n                If there is an error reading or parsing the Parquet file.\n        \"\"\"\n        filename = f\"{table_name}.parquet\"\n        if not await self._storage.has(filename):\n            msg = f\"Could not find {filename} in storage!\"\n            raise ValueError(msg)\n        try:\n            logger.info(\"reading table from storage: %s\", filename)\n            return pd.read_parquet(\n                BytesIO(await self._storage.get(filename, as_bytes=True))\n            )\n        except Exception:\n            logger.exception(\"error loading table from storage: %s\", filename)\n            raise\n\n    async def write_dataframe(self, table_name: str, df: pd.DataFrame) -> None:\n        \"\"\"Write a pandas DataFrame to storage as a Parquet file.\n\n        Args\n        ----\n            table_name: str\n                The name of the table to write. The file will be saved as '{table_name}.parquet'.\n            df: pd.DataFrame\n                The DataFrame to write to storage.","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/microsoft/graphrag/blob/f40e9a26ce62ba0b3fef8837d24aafdcc6e6c704/packages/graphrag-storage/graphrag_storage/tables/parquet_table_provider.py#L44-L80","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before\ndf = await provider.read_dataframe(\"create_base_entities\")\n# after\n# ensure output/create_base_entities.parquet exists (run indexing first)\ndf = await provider.read_dataframe(\"create_base_entities\")","handlingStrategy":"try-catch","validationCode":"if not await provider._storage.has(f\"{table_name}.parquet\"):\n    raise RuntimeError(f\"missing output table: {table_name}.parquet\")","typeGuard":null,"tryCatchPattern":"try:\n    df = await provider.read_dataframe(t)\nexcept ValueError as e:\n    if \"Could not find\" in str(e):\n        logger.warning(\"%s not indexed yet\", t)\n        df = pd.DataFrame()\n    else:\n        raise","preventionTips":["Verify parquet outputs exist after indexing","Keep indexer and reader on the same storage config"],"tags":["parquet","file-not-found","table-provider"],"backgroundTag":"file-not-found","analyzedSha":"f40e9a26ce62ba0b3fef8837d24aafdcc6e6c704","analyzedAt":"2026-08-27T11:16:29.677Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}