Announcement: All noncommercial projects registered to use Earth Engine before April 15, 2025 must verify noncommercial eligibility to maintain Earth Engine access.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-23 UTC."],[],[],null,["# ee.FeatureCollection.runBigQuery\n\nRuns a BigQuery query, fetches the results and presents the them as a FeatureCollection.\n\n\u003cbr /\u003e\n\n| Usage | Returns |\n|------------------------------------------------------------------------------------|-------------------|\n| `ee.FeatureCollection.runBigQuery(query, `*geometryColumn* `, `*maxBytesBilled*`)` | FeatureCollection |\n\n| Argument | Type | Details |\n|------------------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------|\n| `query` | String | GoogleSQL query to perform on the BigQuery resources. |\n| `geometryColumn` | String, default: null | The name of the column to use as the main feature geometry. If not specified, the first geometry column will be used. |\n| `maxBytesBilled` | Long, default: 100000000000 | Maximum number of bytes billed while processing the query. Any BigQuery job that exceeds this limit will fail and won't be billed. |\n\nExamples\n--------\n\n### Code Editor (JavaScript)\n\n```javascript\n// Get places from Overture Maps Dataset in BigQuery public data.\nMap.setCenter(-3.69, 40.41, 12)\nvar mapGeometry= ee.Geometry(Map.getBounds(true)).toGeoJSONString();\nvar sql =\n \"SELECT geometry, names.primary as name, categories.primary as category \"\n + \" FROM bigquery-public-data.overture_maps.place \"\n + \" WHERE ST_INTERSECTS(geometry, ST_GEOGFROMGEOJSON('\" + mapGeometry+ \"'))\";\n\nvar features = ee.FeatureCollection.runBigQuery({\n query: sql,\n geometryColumn: 'geometry'\n});\n\n// Display all relevant features on the map.\nMap.addLayer(features,\n {'color': 'black'},\n 'Places from Overture Maps Dataset');\n\n\n// Create a histogram of the categories and print it.\nvar propertyOfInterest = 'category';\nvar histogram = features.filter(ee.Filter.notNull([propertyOfInterest]))\n .aggregate_histogram(propertyOfInterest);\nprint(histogram);\n\n// Create a frequency chart for the histogram.\nvar categories = histogram.keys().map(function(k) {\n return ee.Feature(null, {\n key: k,\n value: histogram.get(k)\n });\n});\nvar sortedCategories = ee.FeatureCollection(categories).sort('value', false);\nprint(ui.Chart.feature.byFeature(sortedCategories).setChartType('Table'));\n```\nPython setup\n\nSee the [Python Environment](/earth-engine/guides/python_install) page for information on the Python API and using\n`geemap` for interactive development. \n\n```python\nimport ee\nimport geemap.core as geemap\n```\n\n### Colab (Python)\n\n```python\nimport json\nimport pandas as pd\n\n# Get places from Overture Maps Dataset in BigQuery public data.\nlocation = ee.Geometry.Point(-3.69, 40.41)\nmap_geometry = json.dumps(location.buffer(5e3).getInfo())\n\nsql = f\"\"\"SELECT geometry, names.primary as name, categories.primary as category\nFROM bigquery-public-data.overture_maps.place\nWHERE ST_INTERSECTS(geometry, ST_GEOGFROMGEOJSON('{map_geometry}'))\"\"\"\n\nfeatures = ee.FeatureCollection.runBigQuery(\n query=sql, geometryColumn=\"geometry\"\n)\n\n# Display all relevant features on the map.\nm = geemap.Map()\nm.center_object(location, 13)\nm.add_layer(features, {'color': 'black'}, 'Places from Overture Maps Dataset')\ndisplay(m)\n\n# Create a histogram of the place categories.\nproperty_of_interest = 'category'\nhistogram = (\n features.filter(\n ee.Filter.notNull([property_of_interest])\n ).aggregate_histogram(property_of_interest)\n).getInfo()\n\n# Display the histogram as a pandas DataFrame.\ndf = pd.DataFrame(list(histogram.items()), columns=['category', 'frequency'])\ndf = df.sort_values(by=['frequency'], ascending=False, ignore_index=True)\ndisplay(df)\n```"]]