[{"data":1,"prerenderedAt":1492},["ShallowReactive",2],{"page-\u002Fdatasets\u002Fsql":3,"all-pages":1161},{"id":4,"title":5,"body":6,"description":1151,"extension":1152,"meta":1153,"navigation":1154,"path":1155,"robots":1156,"seo":1157,"sitemap":1158,"stem":1159,"__hash__":1160},"content\u002F04.datasets\u002F4.sql.md","Dataset SQL Reference",{"type":7,"value":8,"toc":1131},"minimark",[9,14,31,36,97,100,116,123,127,187,190,194,197,283,313,333,337,340,362,365,415,422,426,429,511,534,572,582,586,599,614,628,631,635,654,672,691,700,704,709,728,738,742,766,784,788,807,814,832,836,859,863,888,894,898,912,919,923,1011,1015,1077,1092,1096,1127],[10,11,13],"h1",{"id":12},"dataset-sql-reference","Dataset SQL reference",[15,16,17,18,25,26,30],"p",{},"Dataset SQL runs on ",[19,20,24],"a",{"href":21,"rel":22},"https:\u002F\u002Fduckdb.org\u002Fdocs\u002Fsql\u002Fintroduction",[23],"nofollow","DuckDB",". You write\none read-only ",[27,28,29],"code",{},"SELECT","; the service validates it, registers the datasets in\nscope as relations, executes it in an isolated DuckDB session, and returns a\npaginated result.",[32,33,35],"h2",{"id":34},"relations-in-scope","Relations in scope",[37,38,39,52],"table",{},[40,41,42],"thead",{},[43,44,45,49],"tr",{},[46,47,48],"th",{},"Query path",[46,50,51],{},"Relations available",[53,54,55,69,80,88],"tbody",{},[43,56,57,64],{},[58,59,60,63],"td",{},[27,61,62],{},"QueryDataset"," (single dataset)",[58,65,66],{},[27,67,68],{},"dataset",[43,70,71,77],{},[58,72,73,76],{},[27,74,75],{},"QueryDatasets"," (project-wide)",[58,78,79],{},"Every dataset in the project, by name",[43,81,82,85],{},[58,83,84],{},"Saved views",[58,86,87],{},"Every dataset and saved view in the project, by name",[43,89,90,93],{},[58,91,92],{},"Export",[58,94,95],{},[27,96,68],{},[15,98,99],{},"Names follow the dataset rules: letters, digits, and dashes, starting with a\nletter. Dash names must be quoted in SQL:",[101,102,107],"pre",{"className":103,"code":104,"language":105,"meta":106,"style":106},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SELECT * FROM \"live-hosts\"\n","sql","",[27,108,109],{"__ignoreMap":106},[110,111,114],"span",{"class":112,"line":113},"line",1,[110,115,104],{},[15,117,118,119,122],{},"Column names may contain uppercase letters. Unquoted identifiers are folded to\nlowercase by DuckDB, so quote mixed-case columns: ",[27,120,121],{},"\"Status_Code\"",".",[32,124,126],{"id":125},"where-sql-runs","Where SQL runs",[37,128,129,139],{},[40,130,131],{},[43,132,133,136],{},[46,134,135],{},"Surface",[46,137,138],{},"Query",[53,140,141,155,166,176],{},[43,142,143,150],{},[58,144,145,146],{},"Datasets → Query → ",[147,148,149],"strong",{},"Advanced SQL",[58,151,152,153,122],{},"One dataset, via ",[27,154,62],{},[43,156,157,160],{},[58,158,159],{},"Datasets → Views",[58,161,162,163,122],{},"A saved view definition, via ",[27,164,165],{},"DatasetViewService",[43,167,168,173],{},[58,169,170,171],{},"API ",[27,172,75],{},[58,174,175],{},"All datasets in a project in one statement.",[43,177,178,184],{},[58,179,170,180,183],{},[27,181,182],{},"ExportDataset"," \u002F query download",[58,185,186],{},"One dataset, streamed to a file.",[15,188,189],{},"The Hub UI's SQL box is scoped to the selected dataset. Project-wide SQL is\navailable through the API; saved views are the UI's way to combine datasets.",[32,191,193],{"id":192},"query-policy","Query policy",[15,195,196],{},"A request is rejected before execution unless it satisfies all of these:",[198,199,200,217,250,280],"ul",{},[201,202,203,204,206,207,209,210,212,213,216],"li",{},"Exactly one statement. For direct dataset queries (",[27,205,62],{},",\n",[27,208,75],{},", and exports) the text must start with ",[27,211,29],{},"\n(case-insensitive) and contain no semicolons. A leading ",[27,214,215],{},"WITH"," CTE or a\nleading comment is rejected by that check.",[201,218,219,220,223,224,223,227,223,230,223,233,223,236,223,239,206,242,245,246,249],{},"Read-only: ",[27,221,222],{},"INSERT",", ",[27,225,226],{},"UPDATE",[27,228,229],{},"DELETE",[27,231,232],{},"CREATE",[27,234,235],{},"DROP",[27,237,238],{},"ALTER",[27,240,241],{},"COPY",[27,243,244],{},"ATTACH",", and ",[27,247,248],{},"DETACH"," are rejected.",[201,251,252,253,223,256,223,259,223,262,223,265,268,269,272,273,276,277,122],{},"No file, network, glob, or catalog access. Table functions such as\n",[27,254,255],{},"read_csv",[27,257,258],{},"read_parquet",[27,260,261],{},"read_text",[27,263,264],{},"glob",[27,266,267],{},"http_get",", and\n",[27,270,271],{},"range"," are rejected, as are DuckDB replacement scans\n(",[27,274,275],{},"FROM '\u002Fpath\u002Ffile.parquet'",") and ",[27,278,279],{},"information_schema",[201,281,282],{},"Every referenced relation must be registered in the query scope. A query\nagainst a different dataset, another project, or a file path fails with\n\"not a dataset in this query scope\".",[15,284,285,286,223,289,292,293,296,297,223,300,223,303,223,306,223,309,312],{},"Joins, ",[27,287,288],{},"GROUP BY",[27,290,291],{},"HAVING",", window functions, ",[27,294,295],{},"UNION",", and scalar functions\n(",[27,298,299],{},"lower",[27,301,302],{},"strpos",[27,304,305],{},"coalesce",[27,307,308],{},"date_trunc",[27,310,311],{},"now",", …) are allowed.",[314,315,316],"blockquote",{},[15,317,318,319,321,322,325,326,329,330,122],{},"Saved views validate with the SQL parser rather than the ",[27,320,29],{},"-prefix\ncheck, so a view ",[147,323,324],{},"may"," start with ",[27,327,328],{},"WITH ... SELECT",". Direct dataset queries\ncannot. See ",[19,331,84],{"href":332},"\u002Fdatasets\u002Fviews",[32,334,336],{"id":335},"ordering-and-pagination","Ordering and pagination",[15,338,339],{},"The service wraps your statement to paginate it:",[101,341,343],{"className":103,"code":342,"language":105,"meta":106,"style":106},"SELECT * FROM (\u003Cyour SELECT>) AS __bh_dataset_query\nORDER BY 1\nLIMIT \u003Cpage_size + 1> OFFSET \u003Coffset>\n",[27,344,345,350,356],{"__ignoreMap":106},[110,346,347],{"class":112,"line":113},[110,348,349],{},"SELECT * FROM (\u003Cyour SELECT>) AS __bh_dataset_query\n",[110,351,353],{"class":112,"line":352},2,[110,354,355],{},"ORDER BY 1\n",[110,357,359],{"class":112,"line":358},3,[110,360,361],{},"LIMIT \u003Cpage_size + 1> OFFSET \u003Coffset>\n",[15,363,364],{},"That means:",[198,366,367,377,394,404,407],{},[201,368,369,372,373,376],{},[147,370,371],{},"Pages are ordered by the first column of your projection, ascending.","\nAn ",[27,374,375],{},"ORDER BY"," inside your statement does not survive the wrapper — put the\ncolumn you want to sort by first. Descending page order is not available\nthrough the paginated API.",[201,378,379,380,383,384,387,388,383,390,393],{},"Page size: default ",[147,381,382],{},"100",", maximum ",[147,385,386],{},"1,000"," for single-dataset and\nproject-wide queries; default ",[147,389,382],{},[147,391,392],{},"10,000"," for saved views.",[201,395,396,399,400,403],{},[27,397,398],{},"next_page_token"," is an opaque cursor. Pass it back as ",[27,401,402],{},"page_token","; an empty\ntoken means the last page. The cursor is an offset, not a snapshot: changing\nthe SQL, filters, or underlying data between pages can shift rows.",[201,405,406],{},"The wrapper fetches one extra row to decide whether another page exists.",[201,408,409,410,414],{},"The engine has a 100,000-row materialization guard; normal page sizes are far\nsmaller. Use ",[19,411,413],{"href":412},"\u002Fdatasets\u002Fapi-cli#exportdataset","export"," for large result sets.",[15,416,417,418,421],{},"If your statement includes its own ",[27,419,420],{},"LIMIT",", the outer pagination applies after\nthat limit. Prefer letting the service paginate.",[32,423,425],{"id":424},"result-types","Result types",[15,427,428],{},"Query results are mapped to dataset value types:",[37,430,431,441],{},[40,432,433],{},[43,434,435,438],{},[46,436,437],{},"DuckDB type",[46,439,440],{},"Result kind",[53,442,443,456,466,485,498],{},[43,444,445,453],{},[58,446,447,223,450],{},[27,448,449],{},"TEXT",[27,451,452],{},"VARCHAR",[58,454,455],{},"text",[43,457,458,463],{},[58,459,460],{},[27,461,462],{},"BOOLEAN",[58,464,465],{},"boolean",[43,467,468,482],{},[58,469,470,223,473,223,476,223,479],{},[27,471,472],{},"TINYINT",[27,474,475],{},"SMALLINT",[27,477,478],{},"INTEGER",[27,480,481],{},"BIGINT",[58,483,484],{},"integer",[43,486,487,495],{},[58,488,489,223,492],{},[27,490,491],{},"FLOAT",[27,493,494],{},"DOUBLE",[58,496,497],{},"number",[43,499,500,508],{},[58,501,502,223,505],{},[27,503,504],{},"TIMESTAMP",[27,506,507],{},"DATE",[58,509,510],{},"timestamp",[15,512,513,514,223,517,520,521,223,524,223,527,223,530,533],{},"Other DuckDB types (",[27,515,516],{},"DECIMAL",[27,518,519],{},"HUGEINT"," and other wide\u002Funsigned integers,\n",[27,522,523],{},"BLOB",[27,525,526],{},"UUID",[27,528,529],{},"INTERVAL",[27,531,532],{},"TIME",", lists, structs, maps) are rejected with an\nunsupported-type error. Cast unusual expressions to a supported type:",[101,535,537],{"className":103,"code":536,"language":105,"meta":106,"style":106},"SELECT\n  CAST(count(*) AS BIGINT) AS rows,\n  CAST(sum(attempts) AS BIGINT) AS attempts,\n  CAST(avg(cvss) AS DOUBLE) AS avg_cvss,\n  CAST(min(first_seen) AS TIMESTAMP) AS earliest\nFROM dataset\n",[27,538,539,544,549,554,560,566],{"__ignoreMap":106},[110,540,541],{"class":112,"line":113},[110,542,543],{},"SELECT\n",[110,545,546],{"class":112,"line":352},[110,547,548],{},"  CAST(count(*) AS BIGINT) AS rows,\n",[110,550,551],{"class":112,"line":358},[110,552,553],{},"  CAST(sum(attempts) AS BIGINT) AS attempts,\n",[110,555,557],{"class":112,"line":556},4,[110,558,559],{},"  CAST(avg(cvss) AS DOUBLE) AS avg_cvss,\n",[110,561,563],{"class":112,"line":562},5,[110,564,565],{},"  CAST(min(first_seen) AS TIMESTAMP) AS earliest\n",[110,567,569],{"class":112,"line":568},6,[110,570,571],{},"FROM dataset\n",[15,573,574,575,206,578,581],{},"Alias calculated columns; otherwise DuckDB names them (",[27,576,577],{},"count_star()",[27,579,580],{},"sum(x)",") and they become the result column names.",[32,583,585],{"id":584},"current-state-and-history","Current state and history",[15,587,588,589,591,592,595,596,122],{},"By default the ",[27,590,68],{}," relation is the current logical state: latest\nobservation per identity, stale rows excluded. Columns include your schema plus\n",[27,593,594],{},"__ingested_at"," and ",[27,597,598],{},"__deleted",[15,600,601,602,605,606,609,610,613],{},"Set ",[27,603,604],{},"includeHistory = true"," (UI ",[147,607,608],{},"Include history",", CLI ",[27,611,612],{},"--include-history",") to\nquery every observation instead:",[101,615,617],{"className":103,"code":616,"language":105,"meta":106,"style":106},"SELECT host, \"__ingested_at\"\nFROM dataset\n",[27,618,619,624],{"__ignoreMap":106},[110,620,621],{"class":112,"line":113},[110,622,623],{},"SELECT host, \"__ingested_at\"\n",[110,625,626],{"class":112,"line":352},[110,627,571],{},[15,629,630],{},"History keeps duplicate identities and older versions; there is no history mode\nfor project-wide queries or saved views.",[32,632,634],{"id":633},"time-ranges","Time ranges",[15,636,637,595,640,643,644,646,647,650,651,653],{},[27,638,639],{},"ingestedAtFrom",[27,641,642],{},"ingestedAtTo"," bound ",[27,645,594],{},". Like structured\nfilters, they are applied ",[147,648,649],{},"outside"," your ",[27,652,29],{},":",[198,655,656,666],{},[201,657,658,659,662,663,665],{},"The default ",[27,660,661],{},"SELECT * FROM dataset"," includes ",[27,664,594],{},", so the time\nrange works as expected.",[201,667,668,669,671],{},"If you project a subset, include ",[27,670,594],{}," or filter on it inside the\nSQL:",[101,673,675],{"className":103,"code":674,"language":105,"meta":106,"style":106},"SELECT host, status_code\nFROM dataset\nWHERE \"__ingested_at\" >= now() - INTERVAL 7 DAY\n",[27,676,677,682,686],{"__ignoreMap":106},[110,678,679],{"class":112,"line":113},[110,680,681],{},"SELECT host, status_code\n",[110,683,684],{"class":112,"line":352},[110,685,571],{},[110,687,688],{"class":112,"line":358},[110,689,690],{},"WHERE \"__ingested_at\" >= now() - INTERVAL 7 DAY\n",[198,692,693],{},[201,694,695,697,698,122],{},[27,696,639],{}," must not be after ",[27,699,642],{},[32,701,703],{"id":702},"examples","Examples",[705,706,708],"h3",{"id":707},"inspect-a-dataset","Inspect a dataset",[101,710,712],{"className":103,"code":711,"language":105,"meta":106,"style":106},"SELECT *\nFROM dataset\nLIMIT 100\n",[27,713,714,719,723],{"__ignoreMap":106},[110,715,716],{"class":112,"line":113},[110,717,718],{},"SELECT *\n",[110,720,721],{"class":112,"line":352},[110,722,571],{},[110,724,725],{"class":112,"line":358},[110,726,727],{},"LIMIT 100\n",[15,729,730,731,734,735,737],{},"A bare ",[27,732,733],{},"SELECT *"," is rewritten to ",[27,736,661],{}," for single-dataset\nqueries.",[705,739,741],{"id":740},"filter-rows-in-sql","Filter rows in SQL",[101,743,745],{"className":103,"code":744,"language":105,"meta":106,"style":106},"SELECT host, ip, resolved\nFROM dataset\nWHERE resolved\n  AND host LIKE 'api.%'\n",[27,746,747,752,756,761],{"__ignoreMap":106},[110,748,749],{"class":112,"line":113},[110,750,751],{},"SELECT host, ip, resolved\n",[110,753,754],{"class":112,"line":352},[110,755,571],{},[110,757,758],{"class":112,"line":358},[110,759,760],{},"WHERE resolved\n",[110,762,763],{"class":112,"line":556},[110,764,765],{},"  AND host LIKE 'api.%'\n",[15,767,768,769,595,772,775,776,779,780,783],{},"DuckDB is case-sensitive for ",[27,770,771],{},"LIKE",[27,773,774],{},"="," on text. Use ",[27,777,778],{},"lower(host) LIKE ...","\nor ",[27,781,782],{},"ILIKE"," when you need case-insensitive matching.",[705,785,787],{"id":786},"aggregate-by-the-first-column","Aggregate by the first column",[101,789,791],{"className":103,"code":790,"language":105,"meta":106,"style":106},"SELECT severity, COUNT(*) AS findings\nFROM dataset\nGROUP BY severity\n",[27,792,793,798,802],{"__ignoreMap":106},[110,794,795],{"class":112,"line":113},[110,796,797],{},"SELECT severity, COUNT(*) AS findings\n",[110,799,800],{"class":112,"line":352},[110,801,571],{},[110,803,804],{"class":112,"line":358},[110,805,806],{},"GROUP BY severity\n",[15,808,809,810,813],{},"Results are sorted by ",[27,811,812],{},"severity"," ascending because it is the first column. To\nsort the page by count instead, put it first:",[101,815,817],{"className":103,"code":816,"language":105,"meta":106,"style":106},"SELECT COUNT(*) AS findings, severity\nFROM dataset\nGROUP BY severity\n",[27,818,819,824,828],{"__ignoreMap":106},[110,820,821],{"class":112,"line":113},[110,822,823],{},"SELECT COUNT(*) AS findings, severity\n",[110,825,826],{"class":112,"line":352},[110,827,571],{},[110,829,830],{"class":112,"line":358},[110,831,806],{},[705,833,835],{"id":834},"window-functions","Window functions",[101,837,839],{"className":103,"code":838,"language":105,"meta":106,"style":106},"SELECT\n  host,\n  row_number() OVER (PARTITION BY program ORDER BY \"__ingested_at\" DESC) AS rn\nFROM dataset\n",[27,840,841,845,850,855],{"__ignoreMap":106},[110,842,843],{"class":112,"line":113},[110,844,543],{},[110,846,847],{"class":112,"line":352},[110,848,849],{},"  host,\n",[110,851,852],{"class":112,"line":358},[110,853,854],{},"  row_number() OVER (PARTITION BY program ORDER BY \"__ingested_at\" DESC) AS rn\n",[110,856,857],{"class":112,"line":556},[110,858,571],{},[705,860,862],{"id":861},"join-datasets-project-wide-sql","Join datasets (project-wide SQL)",[101,864,866],{"className":103,"code":865,"language":105,"meta":106,"style":106},"SELECT s.host, w.status_code, w.title\nFROM subdomains AS s\nJOIN \"web-services\" AS w ON s.host = w.host\nWHERE w.status_code BETWEEN 200 AND 299\n",[27,867,868,873,878,883],{"__ignoreMap":106},[110,869,870],{"class":112,"line":113},[110,871,872],{},"SELECT s.host, w.status_code, w.title\n",[110,874,875],{"class":112,"line":352},[110,876,877],{},"FROM subdomains AS s\n",[110,879,880],{"class":112,"line":358},[110,881,882],{},"JOIN \"web-services\" AS w ON s.host = w.host\n",[110,884,885],{"class":112,"line":556},[110,886,887],{},"WHERE w.status_code BETWEEN 200 AND 299\n",[15,889,890,891,893],{},"This runs through ",[27,892,75],{},"; it cannot reference saved views.",[705,895,897],{"id":896},"inspect-history","Inspect history",[101,899,901],{"className":103,"code":900,"language":105,"meta":106,"style":106},"SELECT host, ip, \"__ingested_at\"\nFROM dataset\n",[27,902,903,908],{"__ignoreMap":106},[110,904,905],{"class":112,"line":113},[110,906,907],{},"SELECT host, ip, \"__ingested_at\"\n",[110,909,910],{"class":112,"line":352},[110,911,571],{},[15,913,914,915,918],{},"Run it with ",[27,916,917],{},"include_history = true"," to see every observation.",[32,920,922],{"id":921},"errors","Errors",[37,924,925,935],{},[40,926,927],{},[43,928,929,932],{},[46,930,931],{},"Error",[46,933,934],{},"Cause",[53,936,937,951,961,971,981,991,1001],{},[43,938,939,948],{},[58,940,941,944,945],{},[27,942,943],{},"Invalid dataset SQL query"," \u002F ",[27,946,947],{},"Syntax error",[58,949,950],{},"DuckDB could not parse the statement.",[43,952,953,958],{},[58,954,955],{},[27,956,957],{},"Forbidden dataset SQL query",[58,959,960],{},"A non-SELECT statement, forbidden function, or table function.",[43,962,963,968],{},[58,964,965],{},[27,966,967],{},"Unknown dataset in query",[58,969,970],{},"A relation outside the registered scope, including file paths.",[43,972,973,978],{},[58,974,975],{},[27,976,977],{},"DuckDB could not prepare the query",[58,979,980],{},"Unknown column, type mismatch, or invalid expression.",[43,982,983,988],{},[58,984,985],{},[27,986,987],{},"Unsupported type",[58,989,990],{},"A projection returned a type the Hub cannot map.",[43,992,993,998],{},[58,994,995],{},[27,996,997],{},"Too many requests",[58,999,1000],{},"The per-user concurrency or rate limit was exceeded.",[43,1002,1003,1008],{},[58,1004,1005],{},[27,1006,1007],{},"invalid page_token",[58,1009,1010],{},"The cursor is malformed.",[32,1012,1014],{"id":1013},"operational-limits","Operational limits",[37,1016,1017,1027],{},[40,1018,1019],{},[43,1020,1021,1024],{},[46,1022,1023],{},"Limit",[46,1025,1026],{},"Default",[53,1028,1029,1037,1045,1053,1061,1069],{},[43,1030,1031,1034],{},[58,1032,1033],{},"Page size (single\u002Fproject-wide)",[58,1035,1036],{},"100, maximum 1,000",[43,1038,1039,1042],{},[58,1040,1041],{},"Page size (views)",[58,1043,1044],{},"100, maximum 10,000",[43,1046,1047,1050],{},[58,1048,1049],{},"Row materialization guard",[58,1051,1052],{},"100,000",[43,1054,1055,1058],{},[58,1056,1057],{},"Query memory",[58,1059,1060],{},"2 GB",[43,1062,1063,1066],{},[58,1064,1065],{},"Concurrent queries per user",[58,1067,1068],{},"2",[43,1070,1071,1074],{},[58,1072,1073],{},"Queries per user per minute",[58,1075,1076],{},"60",[15,1078,1079,1080,206,1083,206,1086,268,1089,122],{},"Operators can tune these with ",[27,1081,1082],{},"BOUNTYHUB_HUB_DATASET_QUERY_MAX_ROWS",[27,1084,1085],{},"BOUNTYHUB_HUB_DATASET_QUERY_MEMORY_LIMIT",[27,1087,1088],{},"BOUNTYHUB_HUB_DATASET_QUERY_MAX_CONCURRENT_PER_USER",[27,1090,1091],{},"BOUNTYHUB_HUB_DATASET_QUERY_PER_MINUTE",[32,1093,1095],{"id":1094},"related","Related",[198,1097,1098,1105,1110,1117],{},[201,1099,1100,1104],{},[19,1101,1103],{"href":1102},"\u002Fdatasets\u002Ffilters","Structured filters"," — typed filters applied on top of a\nquery.",[201,1106,1107,1109],{},[19,1108,84],{"href":332}," — reusable SQL over multiple datasets.",[201,1111,1112,1116],{},[19,1113,1115],{"href":1114},"\u002Fdatasets\u002Fapi-cli","API and CLI"," — request and response fields.",[201,1118,1119,1123,1124,122],{},[19,1120,1122],{"href":1121},"\u002Fdatasets\u002Fworkflows","Pushing dataset rows"," — pushing data with\n",[27,1125,1126],{},"step.update_dataset",[1128,1129,1130],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":106,"searchDepth":562,"depth":556,"links":1132},[1133,1134,1135,1136,1137,1138,1139,1140,1148,1149,1150],{"id":34,"depth":352,"text":35},{"id":125,"depth":352,"text":126},{"id":192,"depth":352,"text":193},{"id":335,"depth":352,"text":336},{"id":424,"depth":352,"text":425},{"id":584,"depth":352,"text":585},{"id":633,"depth":352,"text":634},{"id":702,"depth":352,"text":703,"children":1141},[1142,1143,1144,1145,1146,1147],{"id":707,"depth":358,"text":708},{"id":740,"depth":358,"text":741},{"id":786,"depth":358,"text":787},{"id":834,"depth":358,"text":835},{"id":861,"depth":358,"text":862},{"id":896,"depth":358,"text":897},{"id":921,"depth":352,"text":922},{"id":1013,"depth":352,"text":1014},{"id":1094,"depth":352,"text":1095},"DuckDB SQL over project datasets: relations, allowed statements, ordering and pagination, result types, history, time ranges, joins, aggregates, and errors.","md",{},true,"\u002Fdatasets\u002Fsql",null,{"title":5,"description":1151},{"loc":1155},"04.datasets\u002F4.sql","LcOcRW9TjYCgPujetniNNdZheD4ESuqqZbDdVjBYDI4",[1162,1225,1241,1260,1288,1304,1316,1327,1338,1349,1373,1392,1412,1423,1434],{"title":1163,"path":1164,"stem":1165,"children":1166},"Workflows","\u002Fworkflows","01.workflows",[1167,1169,1173,1177,1181,1185,1189,1193,1197,1201,1205,1209,1213,1217,1221],{"title":1163,"path":1164,"stem":1168},"01.workflows\u002Findex",{"title":1170,"path":1171,"stem":1172},"Workflow Quick Reference","\u002Fworkflows\u002Fquick-reference","01.workflows\u002F00.quick-reference",{"title":1174,"path":1175,"stem":1176},"Workflows Overview","\u002Fworkflows\u002Foverview","01.workflows\u002F01.overview",{"title":1178,"path":1179,"stem":1180},"Workflow Syntax Reference","\u002Fworkflows\u002Fsyntax-reference","01.workflows\u002F02.syntax-reference",{"title":1182,"path":1183,"stem":1184},"Steps","\u002Fworkflows\u002Fsteps","01.workflows\u002F03.steps",{"title":1186,"path":1187,"stem":1188},"Step Outputs","\u002Fworkflows\u002Fstep-outputs","01.workflows\u002F04.step-outputs",{"title":1190,"path":1191,"stem":1192},"Concurrency","\u002Fworkflows\u002Fconcurrency","01.workflows\u002F05.concurrency",{"title":1194,"path":1195,"stem":1196},"Transforms","\u002Fworkflows\u002Ftransforms","01.workflows\u002F06.transforms",{"title":1198,"path":1199,"stem":1200},"For Each","\u002Fworkflows\u002Ffor-each","01.workflows\u002F07.for-each",{"title":1202,"path":1203,"stem":1204},"Modules","\u002Fworkflows\u002Fmodules","01.workflows\u002F08.modules",{"title":1206,"path":1207,"stem":1208},"Agents","\u002Fworkflows\u002Fagents","01.workflows\u002F09.agents",{"title":1210,"path":1211,"stem":1212},"Decisions","\u002Fworkflows\u002Fdecisions","01.workflows\u002F10.decisions",{"title":1214,"path":1215,"stem":1216},"Configuration References","\u002Fworkflows\u002Fconfig","01.workflows\u002F11.config",{"title":1218,"path":1219,"stem":1220},"Comparison With Other Automation Systems","\u002Fworkflows\u002Fcomparison","01.workflows\u002F12.comparison",{"title":1222,"path":1223,"stem":1224},"Generate with AI","\u002Fworkflows\u002Fai-generation","01.workflows\u002F13.ai-generation",{"title":1226,"path":1227,"stem":1228,"children":1229},"Projects","\u002Fprojects","02.projects",[1230,1233,1237],{"title":1231,"path":1227,"stem":1232},"Projects & Runs","02.projects\u002Findex",{"title":1234,"path":1235,"stem":1236},"Projects Overview","\u002Fprojects\u002Foverview","02.projects\u002F1.overview",{"title":1238,"path":1239,"stem":1240},"Runs & Artifacts","\u002Fprojects\u002Fruns-artifacts","02.projects\u002F2.runs-artifacts",{"title":1242,"path":1243,"stem":1244,"children":1245},"Runners","\u002Frunners","03.runners",[1246,1248,1252,1256],{"title":1242,"path":1243,"stem":1247},"03.runners\u002Findex",{"title":1249,"path":1250,"stem":1251},"Runner Overview","\u002Frunners\u002Foverview","03.runners\u002F1.overview",{"title":1253,"path":1254,"stem":1255},"Getting Started with Runners","\u002Frunners\u002Fgetting-started","03.runners\u002F2.getting-started",{"title":1257,"path":1258,"stem":1259},"Custom Runner Images","\u002Frunners\u002Fcustom-image","03.runners\u002F3.custom-image",{"title":1261,"path":1262,"stem":1263,"children":1264},"Datasets","\u002Fdatasets","04.datasets",[1265,1267,1271,1275,1278,1279,1282,1285],{"title":1261,"path":1262,"stem":1266},"04.datasets\u002Findex",{"title":1268,"path":1269,"stem":1270},"Datasets Overview","\u002Fdatasets\u002Foverview","04.datasets\u002F1.overview",{"title":1272,"path":1273,"stem":1274},"Dataset Schemas and Identity","\u002Fdatasets\u002Fschema","04.datasets\u002F2.schema",{"title":1276,"path":1121,"stem":1277},"Pushing and Reading Dataset Rows","04.datasets\u002F3.workflows",{"title":5,"path":1155,"stem":1159},{"title":1280,"path":1102,"stem":1281},"Dataset Structured Filters","04.datasets\u002F5.filters",{"title":1283,"path":332,"stem":1284},"Dataset Saved Views","04.datasets\u002F6.views",{"title":1286,"path":1114,"stem":1287},"Datasets API and CLI","04.datasets\u002F7.api-cli",{"title":1289,"path":1290,"stem":1291,"children":1292},"Agent","\u002Fagent","05.agent",[1293,1296,1300],{"title":1294,"path":1290,"stem":1295},"BH Agent","05.agent\u002Findex",{"title":1297,"path":1298,"stem":1299},"BH Agent Overview","\u002Fagent\u002Foverview","05.agent\u002F1.overview",{"title":1301,"path":1302,"stem":1303},"MCP servers","\u002Fagent\u002Fmcp-servers","05.agent\u002F2.mcp-servers",{"title":1305,"path":1306,"stem":1307,"children":1308},"Bhlast","\u002Fbhlast","06.bhlast",[1309,1312],{"title":1310,"path":1306,"stem":1311},"Bhlast Servers","06.bhlast\u002Findex",{"title":1313,"path":1314,"stem":1315},"Bhlast servers overview","\u002Fbhlast\u002Foverview","06.bhlast\u002F1.overview",{"title":1317,"path":1318,"stem":1319,"children":1320},"Notifications","\u002Fnotifications","07.notifications",[1321,1323],{"title":1317,"path":1318,"stem":1322},"07.notifications\u002Findex",{"title":1324,"path":1325,"stem":1326},"Notifications Overview","\u002Fnotifications\u002Foverview","07.notifications\u002F1.overview",{"title":1328,"path":1329,"stem":1330,"children":1331},"Blob Storage","\u002Fblob-storage","08.blob-storage",[1332,1334],{"title":1328,"path":1329,"stem":1333},"08.blob-storage\u002Findex",{"title":1335,"path":1336,"stem":1337},"Blob Storage Overview","\u002Fblob-storage\u002Foverview","08.blob-storage\u002F1.overview",{"title":1339,"path":1340,"stem":1341,"children":1342},"Payloads","\u002Fpayloads","09.payloads",[1343,1345],{"title":1339,"path":1340,"stem":1344},"09.payloads\u002Findex",{"title":1346,"path":1347,"stem":1348},"Payloads overview","\u002Fpayloads\u002Foverview","09.payloads\u002F1.overview",{"title":1350,"path":1351,"stem":1352,"children":1353},"Cve Watcher","\u002Fcve-watcher","10.cve-watcher",[1354,1357,1361,1365,1369],{"title":1355,"path":1351,"stem":1356},"CVE Watcher","10.cve-watcher\u002Findex",{"title":1358,"path":1359,"stem":1360},"CVE Watcher Overview","\u002Fcve-watcher\u002Foverview","10.cve-watcher\u002F1.overview",{"title":1362,"path":1363,"stem":1364},"CVE Watcher Search and Filters","\u002Fcve-watcher\u002Fsearch","10.cve-watcher\u002F2.search",{"title":1366,"path":1367,"stem":1368},"CVE Watcher Push Notifications","\u002Fcve-watcher\u002Fnotifications","10.cve-watcher\u002F3.notifications",{"title":1370,"path":1371,"stem":1372},"CVE Watcher API and Scopes","\u002Fcve-watcher\u002Fapi","10.cve-watcher\u002F4.api",{"title":1374,"path":1375,"stem":1376,"children":1377},"Developer","\u002Fdeveloper","11.developer",[1378,1380,1384,1388],{"title":1374,"path":1375,"stem":1379},"11.developer\u002Findex",{"title":1381,"path":1382,"stem":1383},"Developer Overview","\u002Fdeveloper\u002Foverview","11.developer\u002F1.overview",{"title":1385,"path":1386,"stem":1387},"Personal Access Token Scopes","\u002Fdeveloper\u002Fscopes","11.developer\u002F2.scopes",{"title":1389,"path":1390,"stem":1391},"Personal Access Tokens","\u002Fdeveloper\u002Fpersonal-access-tokens","11.developer\u002F3.personal-access-tokens",{"title":1393,"path":1394,"stem":1395,"children":1396},"Bh","\u002Fbh","12.bh",[1397,1400,1404,1408],{"title":1398,"path":1394,"stem":1399},"BH CLI","12.bh\u002Findex",{"title":1401,"path":1402,"stem":1403},"BH CLI Overview","\u002Fbh\u002Foverview","12.bh\u002F1.overview",{"title":1405,"path":1406,"stem":1407},"BH CLI Commands","\u002Fbh\u002Fcommands","12.bh\u002F2.commands",{"title":1409,"path":1410,"stem":1411},"BH CLI Examples","\u002Fbh\u002Fexamples","12.bh\u002F3.examples",{"title":1413,"path":1414,"stem":1415,"children":1416},"Billing","\u002Fbilling","13.billing",[1417,1419],{"title":1413,"path":1414,"stem":1418},"13.billing\u002Findex",{"title":1420,"path":1421,"stem":1422},"Billing Overview","\u002Fbilling\u002Foverview","13.billing\u002F1.overview",{"title":1424,"path":1425,"stem":1426,"children":1427},"Tools","\u002Ftools","14.tools",[1428,1430],{"title":1424,"path":1425,"stem":1429},"14.tools\u002Findex",{"title":1431,"path":1432,"stem":1433},"Cookie Lab","\u002Ftools\u002Fcookie-lab","14.tools\u002F1.cookie-lab",{"title":1435,"path":1436,"stem":1437,"children":1438},"Site Policies","\u002Fsite-policies","99.site-policies",[1439,1441,1454,1458,1462,1466,1470,1474,1478],{"title":1435,"path":1436,"stem":1440},"99.site-policies\u002Findex",{"title":1442,"path":1443,"stem":1444,"children":1445},"Privacy Policy","\u002Fsite-policies\u002Fprivacy-policy","99.site-policies\u002F1.privacy-policy",[1446,1450],{"title":1447,"path":1448,"stem":1449},"Company Processors","\u002Fsite-policies\u002Fprivacy-policy\u002Fcompany-processors","99.site-policies\u002Fprivacy-policy\u002F1.company-processors",{"title":1451,"path":1452,"stem":1453},"Data Export Instructions","\u002Fsite-policies\u002Fprivacy-policy\u002Fdata-export-instructions","99.site-policies\u002Fprivacy-policy\u002F2.data-export-instructions",{"title":1455,"path":1456,"stem":1457},"Terms of Service","\u002Fsite-policies\u002Fterms-of-service","99.site-policies\u002F2.terms-of-service",{"title":1459,"path":1460,"stem":1461},"California Resident Notice at Collection","\u002Fsite-policies\u002Fccpa","99.site-policies\u002F3.ccpa",{"title":1463,"path":1464,"stem":1465},"Cancellation Policy","\u002Fsite-policies\u002Fcancellation-policy","99.site-policies\u002F4.cancellation-policy",{"title":1467,"path":1468,"stem":1469},"Refund Policy","\u002Fsite-policies\u002Frefund-policy","99.site-policies\u002F5.refund-policy",{"title":1471,"path":1472,"stem":1473},"Taxes on Services","\u002Fsite-policies\u002Ftaxes-on-services","99.site-policies\u002F6.taxes-on-services",{"title":1475,"path":1476,"stem":1477},"Disclaimer","\u002Fsite-policies\u002Fdisclaimer","99.site-policies\u002F7.disclaimer",{"title":1479,"path":1480,"stem":1481,"children":1482},"Security","\u002Fsite-policies\u002Fsecurity","99.site-policies\u002Fsecurity\u002Findex",[1483,1484,1488],{"title":1479,"path":1480,"stem":1481},{"title":1485,"path":1486,"stem":1487},"Security Overview","\u002Fsite-policies\u002Fsecurity\u002Fsecurity-overview","99.site-policies\u002Fsecurity\u002F1.security-overview",{"title":1489,"path":1490,"stem":1491},"Security Response","\u002Fsite-policies\u002Fsecurity\u002Fsecurity-response","99.site-policies\u002Fsecurity\u002F2.security-response",1794410312376]