
What happened
A Zenn series explains that ML.GENERATE_TEXT needs a model object created via CREATE MODEL and returns a row set, while AI.GENERATE takes a connection_id and endpoint like gemini-2.5-flash and returns a STRUCT.
Why it matters
Because ML.GENERATE_TEXT returns a row set while AI.GENERATE returns a STRUCT, teams that move to the newer style change how they store and read results, which can affect downstream queries and dashboards.
What to watch
The article advises running both generations in parallel on the same 50-row sample and comparing null counts, differences, and totals before switching, since outputs may not match exactly. Watch whether classification or judgment work should be moved to AI.CLASSIFY at the same time.
WHO IT HITSData analysts and analytics engineers who maintain BigQuery pipelines using ML.GENERATE_TEXT will need to check how their queries store and read results if they adopt AI functions, while teams with stable production workloads may choose to keep the older generation for now.
Summaries like this, in your inbox every morning.
The article frames the confusion as a generational split: older guides use CREATE MODEL to build a remote model object and then call ML.GENERATE_TEXT as a table function, while newer material calls AI functions such as AI.GENERATE directly as scalar functions. It notes that articles on the web mix both generations, so following a tutorial without noticing which generation it belongs to is a common cause of queries that fail to run.
The practical guidance for teams with existing assets is to start by finding where ML.GENERATE_TEXT is used, checking INFORMATION_SCHEMA.JOBS_BY_PROJECT and INFORMATION_SCHEMA.MODELS or searching the code repository with grep. It then recommends running the old and new styles side by side on a small sample, such as 50 rows, and comparing null outcomes and differences before switching. It also warns that downstream dashboards, filters, and assumptions about text length can break, especially for classification and judgment tasks where a small label change can make a WHERE condition miss.
What the outcome hinges on is whether the parallel comparison shows acceptable differences and whether downstream consumers survive the change, so the article's advice to keep the old model object for a while and not drop it immediately is a hedge against needing to switch back. For teams doing classification, the piece suggests this may be a natural moment to consider AI.CLASSIFY instead of free-text labeling.
Pick your industry and the AI tools you use, and get news related to your work every day.
Free · 30 seconds with Google · unsubscribe anytimeWhat is AIToday? →
Ask AI anything about this article. The AI reads this article, earlier AIToday articles, and Wikipedia, and cites its sources. Q&As are published on this page for other readers too.
Chunghwa Telecom president Rong-shy Lin said the shift from conversational AI to autonomous AI agents is resha…

Apple and Meta said they would jointly release a new open-weight AI model designed to run on high-end Macs, ai…

A writer and entrepreneur opened his daily to-do list and found 156 items, and concluded that an AI assistant…

A Zenn contributor sorted AI use into three modes — AI as an assistant, AI running alongside people, and AI th…

A non-engineer operator says one person ships four smartphone apps on Google Play, three on the App Store, wit…

A developer released agent-guardrails, a one-script Python standard-library plugin that guards Bash, Write, Ed…
