{"record":{"id":"7eb8bfe0a18e3422","repo":"OpenBB-finance/OpenBB","slug":"no-data-rows-found-for-dataflow-dataflow-with","errorCode":null,"errorMessage":"No data rows found for dataflow '{dataflow}' with parameters: {param_info}. The IMF constraints API reports this combination as valid, but no actual observations were returned in the data. URL -> {url}","messagePattern":"No data rows found for dataflow '(.+?)' with parameters: (.+?)\\. The IMF constraints API reports this combination as valid, but no actual observations were returned in the data\\. URL -> (.+?)","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"warning","filePath":"openbb_platform/providers/imf/openbb_imf/utils/query_builder.py","lineNumber":922,"sourceCode":"                            ].get(derivation_type, derivation_type)\n                        derivation_types_in_series.add(derivation_type)\n\n                    all_data_rows.append(obs_row)\n\n            if indicator_code and derivation_types_in_series:\n                if len(derivation_types_in_series) == 1:\n                    all_series_derivation_types[indicator_code] = list(\n                        derivation_types_in_series\n                    )[0]\n                else:\n                    all_series_derivation_types[indicator_code] = \"; \".join(\n                        sorted(derivation_types_in_series)\n                    )\n\n        if not all_data_rows:\n            # Build a more helpful error message with parameter info\n            param_info = \", \".join(f\"{k}={v}\" for k, v in kwargs.items() if v)\n            raise OpenBBError(\n                EmptyDataError(\n                    f\"No data rows found for dataflow '{dataflow}' with parameters: \"\n                    + f\"{param_info}. \"\n                    + \"The IMF constraints API reports this combination as valid, \"\n                    + \"but no actual observations were returned in the data. \"\n                    + f\"URL -> {url}\"\n                )\n            )\n\n        # Create DataFrame and clean up\n        df = DataFrame(all_data_rows)\n        df = df.rename(columns={\"value\": \"OBS_VALUE\"})\n        df[\"OBS_VALUE\"] = to_numeric(df[\"OBS_VALUE\"], errors=\"coerce\")\n\n        # Parse TIME_PERIOD into valid date format\n        if \"TIME_PERIOD\" in df.columns:\n            df[\"TIME_PERIOD\"] = df[\"TIME_PERIOD\"].apply(parse_time_period)\n","sourceCodeStart":904,"sourceCodeEnd":940,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/imf/openbb_imf/utils/query_builder.py#L904-L940","documentation":"Deep in fetch_data: the XML contained a DataSet but parsing produced zero data rows, despite the IMF constraints API earlier reporting the dimension combination valid. Raised as EmptyDataError-wrapped OpenBBError with the parameters and URL for diagnosis.","triggerScenarios":"A series exists in metadata/constraints but has no observations for the requested key (e.g. discontinued indicator, country not reporting that series), or all observations were filtered out by the requested date range handled downstream.","commonSituations":"Exploring the SDMX catalog and picking codes that are structurally valid but never populated; requesting recent periods for slow-reporting series.","solutions":["Open the URL from the message and confirm no Series/Obs elements exist server-side.","Widen the query (wildcard a dimension) or extend the date range, then filter locally.","Pick an adjacent indicator in the same hierarchy that actually has data.","Handle it as expected empty data in ETL (log and continue) rather than a crash."],"exampleFix":"# before\ntry:\n    df = qb.fetch_data(url)\nexcept OpenBBError:\n    raise  # pipeline dies on structurally-valid-but-empty series\n\n# after\ntry:\n    df = qb.fetch_data(url)\nexcept OpenBBError as e:\n    if 'No data rows found' in str(e):\n        df = pd.DataFrame()  # expected gap; continue\n    else:\n        raise","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    df = qb.fetch_data(url)\nexcept OpenBBError as e:\n    if 'No data rows found' in str(e):\n        df = pd.DataFrame()  # or widen the key / extend dates and retry once\n    else:\n        raise","preventionTips":["Expect structurally-valid-but-unpopulated series when exploring IMF catalogs.","Widen the query (wildcard a dimension, extend dates) before concluding data is missing.","Log the URL from the message for post-hoc verification in a browser."],"tags":["imf","sdmx","empty-data","no-results","etl"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}