[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"cms-page:\u002Fblog\u002Fgoogle-big-query-ml":3},{"date":4,"date_gmt":4,"content":5,"sticky":7,"format":8,"categories":9,"collections":12,"coauthors":13,"class_list":15,"acf":25,"head_links":457,"breadcrumbs":458,"reading_minutes":185,"category":466,"head":469},"2024-08-01T14:45:33",{"rendered":6},"\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Fbqml-introduction\">Google BigQuery ML\u003C\u002Fa> (BQML) is a powerful tool that allows data scientists and analysts to build and deploy machine learning models directly within Google BigQuery. By integrating machine learning into BigQuery, BQML eliminates the need to move data between various systems or platforms, enabling you to utilise \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fmedia-solutions\u002Fdata-science\u002F\">data science\u003C\u002Fa> to extract data-driven insights efficiently. This simplifies the workflow and reduces the time to develop and operationalise ML models.\u003C\u002Fp>\n\n\n\n\u003Cp>You can build and train models using \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSQL\">SQL\u003C\u002Fa> queries, allowing for easy integration with existing \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fmedia-solutions\u002Fmodern-data-stack\u002F\">data pipelines\u003C\u002Fa>. BQML supports a variety of model types, including linear and logistic regression, ARIMA models, and more, enabling you to tackle a wide range of predictive analytics tasks efficiently.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1239\" height=\"1075\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fbig-query-ml-1.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-29817\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>Using BigQuery ML for data analysis is made significantly easier due to its seamless integration with Google \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fanalytics\u002Flooker-studio\u002F\">Data Studio\u003C\u002Fa>, Google&#8217;s powerful data visualisation and business intelligence tool. This connection allows users to directly visualise, explore, and share insights from their BigQuery ML models without the need for complex data transfers or additional processing. Data Studio provides an intuitive, drag-and-drop interface for creating rich, interactive dashboards that can display real-time results from BQML models.\u003C\u002Fp>\n\n\n\n\u003Cp>Additionally, you can use BigQuery ML to provide some elementary insights into \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fmedia-solutions\u002Fmeasurement\u002F\">media effectiveness\u003C\u002Fa> by leveraging its machine learning capabilities to analyse and optimise media strategies. It enables quick predictive modelling to forecast campaign impacts, audience segmentation for tailored targeting, and \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fhow-data-driven-attribution-works-in-google-analytics-4\u002F\">multi-touch attribution\u003C\u002Fa> to understand the contribution of each media touchpoint. Its seamless integration with tools like Data Studio and \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fgoogle-analytics-4-updates-and-what-they-mean-for-your-business\u002F\">Google Analytics\u003C\u002Fa> ensures comprehensive analysis and easy implementation of insights.\u003C\u002Fp>\n\n\n\n\u003Cdiv class=\"table-of-contents\">\u003Cul>\u003Cli class=\"heading-h2\">\u003Ca href=\"#key-functions\">Key functions\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#the-create-model-statement\">The “CREATE MODEL” statement?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#the-ml-evaluate-function\">The “ML.EVALUATE” function\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#the-ml-predict-function\">The “ML.PREDICT” function\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#time-series-forecasting\">Time series forecasting\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#introduction-and-objectives\">Introduction and objectives\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#model-creation-and-evaluation\">Model creation and evaluation\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#forecasting\">Forecasting\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#logic\">Logic regression\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#introduction-and-objectives\">Introduction and objectives\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#model-creation-and-evaluation\">Model creation and evaluation\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#prediction\">Prediction\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#conclusion\">Conclusion\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fdiv>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"key-functions\">Key functions\u003C\u002Fh2>\n\n\n\n\u003Cp>Google BQML breaks the task of building and operationalising ML models into 3 steps, each associated with its own function. The typical workflow in BQML begins with the creation of the model, it is here that parameter estimation takes place. This is then followed by an \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fbuilding-trustworthy-media-insights-through-model-validation\u002F\">evaluation of the model\u003C\u002Fa>, in which precision and accuracy are analysed. Lastly, the model is then used to perform prediction.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"the-create-model-statement\">The “CREATE MODEL” statement&nbsp;\u003C\u002Fh3>\n\n\n\n\u003Cp>The first step when developing any ML model is to build it, which involves parameter estimation. During the creation of the model, BQML automatically splits the data into \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTraining,_validation,_and_test_data_sets\">training and testing subsets\u003C\u002Fa>, enabling you to assess the predictive accuracy of your given model. Parameter estimation is performed in BQML by minimising the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fwww.statistics.com\u002Fglossary\u002Floss-function\u002F#:~:text=A%20loss%20function%20specifies%20a,accurate%20within%20a%20certain%20range.\">loss statistic\u003C\u002Fa>, a metric describing how well the model predicts the test dataset. If predictions are close to the unseen data then the loss should be close to 0.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"678\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fbig-query-ml-2.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-29818\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>Additionally, the “\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Freference\u002Fstandard-sql\u002Fbigqueryml-syntax-create\">CREATE MODEL\u003C\u002Fa>” statement is where you specify the type of model you wish to build. The model you build should be relevant to the objective in mind. BQML has provided \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Fbqml-introduction#model_selection_guide\">this guide\u003C\u002Fa> to help with selecting the right model.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"the-ml-evaluate-function\">The “ML.EVALUATE” function\u003C\u002Fh3>\n\n\n\n\u003Cp>The second step in the ML workflow is to evaluate the performance of the model, which is done in BQML using the “\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Freference\u002Fstandard-sql\u002Fbigqueryml-syntax-evaluate\">ML.EVALUATE\u003C\u002Fa>” function. This function evaluates the predicted values generated by the model against the actual data for both the training and the testing datasets. Outputs may vary depending on the type of model you build, the following metrics are standard output when working with a \u003Ca rel=\"noreferrer noopener\" href=\"#logic\">logistic regression model\u003C\u002Fa>, in which binary classification is the objective in mind:\u003Cbr>\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>\u003Cstrong>precision: \u003C\u002Fstrong>a metric for classification models which identifies the frequency with which a model was correct when predicting the positive class.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>recall: \u003C\u002Fstrong>a metric for classification models that tells you how many positive labels, out of all the possible positive labels, you correctly identified.&nbsp;\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>accuracy: \u003C\u002Fstrong>a metric for classification models that tells you the fraction of predictions that a classification model got right.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>f1_score: \u003C\u002Fstrong>measures the overall accuracy of the model. An f1 score lies between 0 and 1, 1 indicating optimal accuracy.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>log_loss:\u003C\u002Fstrong> This is the measure of how far the model&#8217;s predictions are from the correct labels. The log is used due to the nature of logistic regression.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>roc_auc: \u003C\u002Fstrong>refers to the area under the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fmachine-learning\u002Fcrash-course\u002Fclassification\u002Froc-and-auc#:~:text=An%20ROC%20curve%20(receiver%20operating,False%20Positive%20Rate\">ROC curve\u003C\u002Fa>, which is the probability that a classifier is more confident that a randomly chosen positive example is actually positive than that a randomly chosen negative example is positive.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"the-ml-predict-function\">The “ML.PREDICT” function\u003C\u002Fh3>\n\n\n\n\u003Cp>The “\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fcloud.google.com\u002Fbigquery\u002Fdocs\u002Freference\u002Fstandard-sql\u002Fbigqueryml-syntax-predict\">ML.PREDICT\u003C\u002Fa>” function allows you to forecast from the model, however, care must be taken with forecasting as ML models tend to lose predictive accuracy the further away we \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FExtrapolation\">extrapolate\u003C\u002Fa> from the known data set. By applying this function, you can easily predict outcomes based on new input data directly within BigQuery.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"time-series-forecasting\">Time series forecasting\u003C\u002Fh2>\n\n\n\n\u003Cp>Time series forecasting is crucial in digital marketing as it enables you to predict future trends and customer behaviours based on historical data, allowing for more informed decision-making and strategic \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fdigital-marketing\u002Fstrategy\u002Fmedia-planning\u002F\">media planning\u003C\u002Fa>. By leveraging time series forecasting, you can anticipate peak periods, optimise campaign timing, and allocate budgets more effectively to maximise ROAS.\u003C\u002Fp>\n\n\n\n\u003Cp>Integrating time series forecasting with \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fmedia-mix-modelling\u002F\">Marketing Mix Modeling\u003C\u002Fa> (MMM) further enhances its value, as MMM helps quantify the impact of various marketing channels and activities on sales and other key performance indicators. This combination allows you to not only forecast future outcomes but also understand the drivers behind these predictions, enabling a more holistic and data-driven approach to campaign optimization and resource allocation.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"introduction-and-objectives\">Introduction and objectives\u003C\u002Fh3>\n\n\n\n\u003Cp>In this example, we’ll create an \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAutoregressive_integrated_moving_average\">ARIMA\u003C\u002Fa> time series model to perform single time-series forecasting using the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fconsole.cloud.google.com\u002Fbigquery?p=bigquery-public-data&amp;d=google_analytics_sample&amp;t=ga_sessions_20170801&amp;page=table&amp;_ga=2.128198468.936982125.1721810777-961047795.1695717430&amp;_gac=1.128132734.1720107963.CjwKCAjwkJm0BhBxEiwAwT1AXNKlycW5alGJF6nTcAc_vuj3xMq6gyj_6msF9NthFDiThCCRFaERyxoCPIoQAvD_BwE\">google_analytics_sample.ga_sessions\u003C\u002Fa> sample table. The ga_sessions table contains information about a slice of session data collected by \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fanalytics\u002Fgoogle-analytics-360\u002F\">Google Analytics 360\u003C\u002Fa> and sent to BigQuery. We’ve extracted the daily number of website visits from 2016-08-01 to 2017-08-01.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>The objective is to forecast the number of website visits for August 2017.\u003C\u002Fp>\n\n\n\n\u003Cp>The first step in creating any form of ML model is to understand the data you’re modelling. The visual below shows the data we’ll be modelling.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"933\" height=\"412\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fbig-query-ml-3.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-29819\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>At first glance, this time series exhibits an increasing trend until ~November 2016. This trend then starts to decrease until December 2016, telling us that we have a non-constant mean. This indicates that perhaps taking the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fotexts.com\u002Ffpp2\u002Fstationarity.html#differencing\">first difference\u003C\u002Fa> might eliminate the trends present in this data.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Furthermore, the variance of this time series does appear to be somewhat constant over time, with very few peaks and troughs standing out. This indicates no need for a transform to eliminate fluctuations in variance.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"model-creation-and-evaluation\">Model creation and evaluation\u003C\u002Fh3>\n\n\n\n\u003Cp>Now we’ve familiarised ourselves with the data and identified the type of model we require, the next step is to run the “CREATE model” statement. As we’re going to use an ARIMA model we’ll need to specify “model_type = ‘ARIMA_PLUS’”. By default, the algorithm fits dozens of candidate models and automatically tunes the hyperparameters. BQML chooses the model with the lowest \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAkaike_information_criterion\">Akaike information criterion (AIC)\u003C\u002Fa>.\u003C\u002Fp>\n\n\n\n\u003Cp>After creating your model, the next step is to evaluate its performance. To do this we simply run the “ML.EVALUATE” function and observe our outputs. Upon running this, you should find the outputs of up to 42 candidate models, notice that the optimal model is the one with the lowest AIC which is always on row 1. The relevant outputs for row 1 are as follows:\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>p\u003C\u002Fth>\u003Cth>d\u003C\u002Fth>\u003Cth>q\u003C\u002Fth>\u003Cth>\u003Cstrong>has_drift\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>AIC\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>variance\u003C\u002Fstrong>\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>2\u003C\u002Ftd>\u003Ctd>1\u003C\u002Ftd>\u003Ctd>3\u003C\u002Ftd>\u003Ctd>true\u003C\u002Ftd>\u003Ctd>4885.81\u003C\u002Ftd>\u003Ctd>36334\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Cp>This tells us we’re forecasting from an \u003Cem>ARIMA\u003C\u002Fem>(2,1,3) with an intercept term.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>For more information on the nature of our model, we can run the “ML.ARIMA_COEFFICIENTS” function to extract the values of the coefficients of our model as tabulated below.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>\u003Cstrong>ma1\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>ma2\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>ar1\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>ar2\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>ar3\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>intercept\u003C\u002Fstrong>\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>-0.1498\u003C\u002Ftd>\u003Ctd>-0.6834\u003C\u002Ftd>\u003Ctd>-0.2523\u003C\u002Ftd>\u003Ctd>-0.6894\u003C\u002Ftd>\u003Ctd>-0.6484\u003C\u002Ftd>\u003Ctd>2.6125\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Cp>Overall, our model has 2 non-seasonal \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMoving-average_model\">moving average components\u003C\u002Fa>, 3 non-seasonal \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAutoregressive_model\">autoregressive components\u003C\u002Fa> and has non-seasonal difference of order 1. This model is optimal, suggesting that there is no need for seasonal components for forecasting.\u003C\u002Fp>\n\n\n\n\u003Cp>It is important to point out here that when building an ML model, model diagnostics should be a part of your workflow! Fortunately for us, the “ML.EXPLAIN.FORECAST” function allows you to extract your residuals for conducting \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fwww.geeksforgeeks.org\u002Fresidual-analysis\u002F\">residual analysis\u003C\u002Fa>.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"forecasting\">Forecasting\u003C\u002Fh3>\n\n\n\n\u003Cp>Now we have evaluated our model and are familiar with its various components, then the next step is to forecast the number of website visits for August 2017. To do this we make use of the “ML.FORECAST” function, which produces both future time series values and prediction intervals. The following forecasts were produced.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"415\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fbig-query-ml-4.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-29820\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>Now that we have our daily forecasts, we may wish to summarise them for the whole of August. The table below shows the forecasted total number of website visits, along with the associated upper and lower bounds.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth scope=\"col\">Total mean forecast\u003C\u002Fth>\u003Cth scope=\"col\">Total upper forecast\u003C\u002Fth>\u003Cth scope=\"col\">Total lower forecast\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>~72,029\u003C\u002Ftd>\u003Ctd>~57,667\u003C\u002Ftd>\u003Ctd>~86,392\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Cp>On average we expect to see 72,029 website visits during August 2017. We should expect to see at least 57,667 and at most 86,392.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"logic\">Logic regression\u003C\u002Fh2>\n\n\n\n\u003Cp>Logistic regression is a particularly valuable tool to have in digital marketing as it provides a robust method for predicting binary outcomes, such as \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fdigital-experience\u002Fcro\u002F\">customer conversion\u003C\u002Fa> or click-through rates, based on various predictor variables like user behaviour, demographic information, and past interactions. Through logistic regression, you can identify the key factors that influence customer decisions and tailor their strategies to target high-probability converters more effectively.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Additionally, logistic regression can be seamlessly integrated with \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fdemystifying-rfm-segmentation-analysis\u002F\">RFM\u003C\u002Fa> (Recency, Frequency, Monetary) modelling to predict customer behaviours such as purchase likelihood, enabling you to target and engage the most valuable customer segments more effectively.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"introduction-and-objectives\">Introduction and objectives\u003C\u002Fh3>\n\n\n\n\u003Cp>In this example we create a logistic regression model using BigQuery ML. We’ll use the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsupport.google.com\u002Fanalytics\u002Fanswer\u002F7586738?ref_topic=3416089#zippy=%2Cin-this-article\">Google Analytics sample dataset\u003C\u002Fa> to create a model that predicts whether a website visitor will make a transaction. If the number of transactions within the session is “NULL”, we assign this to a value of 0. Otherwise, it is set to 1. These values represent the possible outcomes.\u003C\u002Fp>\n\n\n\n\u003Cp>Given we only have existing data up to 30th June 2017, the objective of this model is to predict the number of website visitors that will make a transaction throughout July 2017.\u003C\u002Fp>\n\n\n\n\u003Cp>To model the probability that a website visitor will complete a transaction, the following predictor variables have been used:\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>The operating system of the visitor&#8217;s device.\u003C\u002Fli>\n\n\n\n\u003Cli>The device they used to visit the website.\u003C\u002Fli>\n\n\n\n\u003Cli>The country from which the session originated.\u003C\u002Fli>\n\n\n\n\u003Cli>The number of page views within that session.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"model-creation-and-evaluation\">Model creation and evaluation\u003C\u002Fh3>\n\n\n\n\u003Cp>Now we have all our variables defined and have identified the type of model we require, the next step is to run the “CREATE model” statement. We’re running the model using daily data from 2016-08-01 to 2017-06-30.\u003C\u002Fp>\n\n\n\n\u003Cp>After creating your model the next step is to evaluate its performance. To do this we simply run the “ML.EVALUATE” function and observe our outputs. The outputs of doing so are tabulated below:\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>\u003Cstrong>precision\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>recall\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>accuracy\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>f1_score\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>log_loss\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>roc_auc\u003C\u002Fstrong>\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>0.4685\u003C\u002Ftd>\u003Ctd>0.1108\u003C\u002Ftd>\u003Ctd>0.9853\u003C\u002Ftd>\u003Ctd>0.1792\u003C\u002Ftd>\u003Ctd>0.0462\u003C\u002Ftd>\u003Ctd>0.9817\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Cp>As we can see, the model metrics here are quite low and significantly far away from the maximums, indicating we have plenty of room for improvement and should reconsider. For a “good” model, we should expect most of these metrics (apart from the log_loss) to be close to 1. For the purposes of this blog, we’re going to continue with this model and produce some predictions.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prediction\">Prediction\u003C\u002Fh3>\n\n\n\n\u003Cp>Using the “ML.PREDICT” function, we’ve predicted the number of transactions made by website visitors from the USA for July 2017.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-table\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>\u003Cstrong>Country\u003C\u002Fstrong>\u003C\u002Fth>\u003Cth>\u003Cstrong>Number of Transactions\u003C\u002Fstrong>\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>USA\u003C\u002Ftd>\u003Ctd>220\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Ffigure>\n\n\n\n\u003Cp>Therefore the number of transactions made by website visitors from the USA for July 2017 is predicted to be approximately 220.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"conclusion\">Conclusion\u003C\u002Fh2>\n\n\n\n\u003Cp>In conclusion, Google BigQuery ML offers a robust easy-to-use platform for integrating machine learning directly within your data warehouse environment. By leveraging the CREATE MODEL, ML.EVALUATE, and ML.PREDICT functions, you can seamlessly build, evaluate, and deploy models using standard SQL queries. The example of ARIMA forecasting demonstrates the powerful capabilities of BQML for time series analysis, allowing for accurate forecasts and insightful analytics.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Whether you are looking to perform classification, regression, or time series forecasting, BigQuery ML provides the tools necessary to streamline your machine learning workflows, making advanced analytics accessible and efficient.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca rel=\"noreferrer noopener\" href=\"\u002Fmedia-solutions\u002Fmeasurement\u002F\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"3840\" height=\"540\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F04\u002Ff0sKYLsk-Measurement_Banner_01.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-27925\"\u002F>\u003C\u002Fa>\u003C\u002Ffigure>\n",false,"standard",[10,11],280,41,[],[14],120,[16,17,18,19,20,21,22,23,24],"post-29789","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-engineering","category-measurement",{"page_content_modules":26,"hero":181},[27,135],{"acf_fc_layout":28,"reduced":29,"top_overlap":-1,"bottom_underlap":-1,"disable_observer":29,"title":30,"content":6,"authors":31},"blog_post_content",true,"A deep dive into Google Big Query ML for data-driven marketers",[32],{"id":33,"path":34,"display_name":35,"job_title":36,"description":37,"avatar_url":38,"acf":39},29,"\u002Fabout\u002Four-team\u002Fharry-brace\u002F","Harry Brace","Director, Head of Solutions","I'm the Director, Head of Solutions at Impression. I spend my time debugging and implementing tracking using Google Tag Manager, managing data warehousing platforms and building Looker Studio reports!","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"full_bio":40,"job_title":36,"specialist_service_links":41,"photo":79},"\u003Cp>Director, Head of Solutions. Joined Impression in November 2017.\u003C\u002Fp>\n\u003Cp>I gained 4 years of experience as a web developer before moving to Impression as a digital account manager in 2017. I moved across to the Analytics department in 2019 and I’ve been strengthening and growing our Analytics offering ever since.\u003C\u002Fp>\n\u003Cp>Day to day, I spend my time debugging and implementing tracking using Google Tag Manager, managing data warehousing platforms and building Looker Studio reports!\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Something that I’m proud of:\u003C\u002Fstrong>\u003Cbr \u002F>\nBuilding the analytics department over the last couple of years with the help of Aaron and now Alex H.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Outside of work:\u003C\u002Fstrong>\u003Cbr \u002F>\nFind me socialising, skiing or gaming.\u003C\u002Fp>\n",[42,60,70],{"page":43,"link_text":59},{"ID":44,"post_author":45,"post_date":46,"post_date_gmt":46,"post_content":47,"post_title":48,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":51,"to_ping":47,"pinged":47,"post_modified":52,"post_modified_gmt":52,"post_content_filtered":47,"post_parent":53,"guid":54,"menu_order":53,"post_type":55,"post_mime_type":47,"comment_count":56,"filter":57,"url_path":58},374,"98","2021-01-11 16:25:32","","Analytics","publish","closed","analytics","2026-08-25 10:02:52",0,"\u002F?page_id=374","page","0","raw","\u002Fanalytics\u002F","Web Analytics",{"page":61,"link_text":64},{"ID":62,"post_author":45,"post_date":63,"post_date_gmt":63,"post_content":47,"post_title":64,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":65,"to_ping":47,"pinged":47,"post_modified":66,"post_modified_gmt":66,"post_content_filtered":47,"post_parent":67,"guid":68,"menu_order":53,"post_type":55,"post_mime_type":47,"comment_count":56,"filter":57,"url_path":69},17916,"2022-06-20 08:56:55","Tag Management","tag-management","2025-03-13 14:59:15",17552,"\u002F?page_id=17916","\u002Fmedia-solutions\u002Ftag-management\u002F",{"page":71,"link_text":74},{"ID":72,"post_author":45,"post_date":73,"post_date_gmt":73,"post_content":47,"post_title":74,"post_excerpt":47,"post_status":49,"comment_status":50,"ping_status":50,"post_password":47,"post_name":75,"to_ping":47,"pinged":47,"post_modified":76,"post_modified_gmt":76,"post_content_filtered":47,"post_parent":67,"guid":77,"menu_order":53,"post_type":55,"post_mime_type":47,"comment_count":56,"filter":57,"url_path":78},17140,"2022-05-27 14:22:19","Google Marketing Platform","google-marketing-platform","2026-08-25 10:20:51","\u002F?page_id=17140","\u002Fmedia-solutions\u002Fgoogle-marketing-platform\u002F",{"ID":80,"id":80,"title":81,"filename":82,"filesize":83,"url":84,"link":85,"alt":47,"author":86,"description":47,"caption":47,"name":87,"status":88,"uploaded_to":53,"date":89,"modified":89,"menu_order":53,"mime_type":90,"type":91,"subtype":92,"icon":93,"width":94,"height":95,"sizes":96},25135,"Harry-Brace2","Harry-Brace2.png",306919,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&q=90","\u002Fharry-brace2\u002F","12","harry-brace2","inherit","2023-10-03 16:03:03","image\u002Fpng","image","png","\u002Fwp\u002Fwp-includes\u002Fimages\u002Fmedia\u002Fdefault.png",696,600,{"thumbnail":97,"thumbnail-width":98,"thumbnail-height":98,"medium":99,"medium-width":100,"medium-height":101,"medium_large":102,"medium_large-width":103,"medium_large-height":104,"large":105,"large-width":106,"large-height":107,"1536x1536":108,"1536x1536-width":109,"1536x1536-height":110,"2048x2048":111,"2048x2048-width":112,"2048x2048-height":113,"post-thumbnail":114,"post-thumbnail-width":115,"post-thumbnail-height":116,"12_col":117,"12_col-width":118,"12_col-height":119,"default_landscape":120,"default_landscape-width":121,"default_landscape-height":95,"default_portrait":122,"default_portrait-width":95,"default_portrait-height":121,"6_col_and_margin_short":123,"6_col_and_margin_short-width":115,"6_col_and_margin_short-height":119,"11_col_and_margin":124,"11_col_and_margin-width":125,"11_col_and_margin-height":119,"9_col_rectangle":126,"9_col_rectangle-width":127,"9_col_rectangle-height":128,"11_col":129,"11_col-width":130,"11_col-height":119,"staff_image_696_600":131,"staff_image_696_600-width":94,"staff_image_696_600-height":95,"rectangular_thumbnail":132,"rectangular_thumbnail-width":133,"rectangular_thumbnail-height":134},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640","640","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=scale&h=172&q=90&w=200",200,172,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=scale&h=662&q=90&w=768",768,662,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892","1892","1000","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=scale&h=1324&q=90&w=1536",1536,1324,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=scale&h=1766&q=90&w=2048",2048,1766,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=1180&q=90&w=1860",1860,1180,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2880",2880,870,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=800",800,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=800&q=90&w=600","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=1860","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=3080",3080,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=1400&q=90&w=2150",2150,1400,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2640",2640,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=696","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress%2Cformat&fit=crop&h=300&q=90&w=750",750,300,{"acf_fc_layout":136,"reduced":29,"top_overlap":137,"bottom_underlap":137,"disable_observer":-1,"heading":138,"cta_text":139,"cta_link":140,"items":141},"related_module","small","See more posts","See all articles","\u002Fblog\u002F",[142,156,166],{"type_key":17,"title":143,"excerpt":144,"to":145,"postedAt":146,"readingTime":147,"image":148,"authors":149,"category":153},"Beyond ad-level data: Unlocking granular product insights for Meta","\u003Cp>Standard Meta Ads reporting traditionally stops at the ad level, leaving e-commerce brands in the dark about which specific products are actually driving traffic on social platforms. While Dynamic Product Ads (DPAs) are incredibly powerful, they aggregate performance across multiple items, making it difficult to isolate individual product success.&nbsp; To bridge this data gap, the [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Funlocking-granular-product-insights-for-meta\u002F","2026-06-24T14:13:48",4,"https:\u002F\u002Fimages.impression.co.uk\u002F2026\u002F06\u002Fallison-saeng-B7VlWt3pRM0-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[150],{"name":151,"image":152},"Zoe Le","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F08\u002FZoe-Le-NEW.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"to":154,"name":155},"\u002Fblog\u002Fcategory\u002Fmeasurement\u002F","Measurement",{"type_key":17,"title":157,"excerpt":158,"to":159,"postedAt":160,"readingTime":161,"image":162,"authors":163,"category":165},"Which Marketing Mix Modelling platform should you use?","\u003Cp>If you’ve decided to build a Marketing Mix Model (MMM), an important first step is to choose what platform you want to use. There are quite a few options, ranging from simple to complex, with different benefits to each You&#8217;ve probably come across these libraries already: Google’s Meridian, Meta&#8217;s Robyn, PyMC Marketing and a handful [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Fwhich-marketing-mix-modelling-platform-should-you-use\u002F","2026-06-10T11:28:01",6,"https:\u002F\u002Fimages.impression.co.uk\u002F2026\u002F06\u002Fvaleria-nikitina-ie2R2t9fC9Q-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[164],{"name":35,"image":38},{"to":154,"name":155},{"type_key":17,"title":167,"excerpt":168,"to":169,"postedAt":170,"readingTime":171,"image":172,"authors":173,"category":180},"Beyond the click: Can you use MMM to prove the value of LLMs?","\u003Cp>LLMs (Large Language Models) have quickly become a significant influence on a customer&#8217;s journey, and all signs point to this influence only increasing. Even before we consider how to influence visibility across AI search, the first question we have to ask ourselves is: How do we measure the impact LLMs have on top-line results? The [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Fcan-mmm-prove-the-value-of-lmms\u002F","2026-04-28T11:48:18",8,"https:\u002F\u002Fimages.impression.co.uk\u002F2026\u002F04\u002Faerps-com-bUUrG6CMHiA-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[174,177],{"name":175,"image":176},"Alex Howat","https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F06\u002FkMgPqCLz-Alex-Howat.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"name":178,"image":179},"Petar Jovetic","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F08\u002FPete-Jovetic-NEW.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"to":154,"name":155},{"type":182,"style":183,"heading":30,"date":4,"updatedAt":184,"reading_minutes":185,"image":186,"imageAlt":30,"categories":187,"collections":456},"blog-post","light","2026-08-25T09:29:44",10,"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fadrien-delforge-yZrhORWUATg-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1180&q=90&w=1860",[188,371],{"id":10,"count":185,"description":189,"link":190,"name":191,"slug":192,"taxonomy":193,"parent":53,"meta":194,"acf":195,"head_links":196,"resource_count":53,"yoast_title":197,"yoast_meta":198,"yoast_json_ld":241,"_links":339,"path":190},"Behind the scenes of any good advertising campaign, customer experience or \u003Ca href=\"\u002Fmedia-solutions\u002Fmeasurement\u002F\">data analysis\u003C\u002Fa> is the lifting, shifting and transformation of millions of rows of raw data. At Impression our \u003Ca href=\"\u002Fmedia-solutions\u002F\">Solutions\u003C\u002Fa> team comprises data engineers familiar with advertising platforms, APIs, various industry tooling and web scraping -- and of course databases like \u003Ca href=\"\u002Fmedia-solutions\u002Fmodern-data-stack\u002F\">customer data platforms\u003C\u002Fa>. Check out the posts below.","\u002Fblog\u002Fcategory\u002Fdata-engineering\u002F","Data Engineering","data-engineering","category",[],{"hidden":7,"sub_title_override":191,"title_override":47},[],"Data Engineering - Impression",[199,201,204,207,210,213,215,218,220,223,226,229,232,235,238],{"property":200,"content":197},"title",{"name":202,"content":203},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"property":205,"content":206},"canonical","https:\u002F\u002Fadmin.impressiondigital.com\u002Fblog\u002Fcategory\u002Fdata-engineering\u002F",{"name":208,"content":209},"og:locale","en-GB",{"property":211,"content":212},"og:type","article",{"property":214,"content":197},"og:title",{"property":216,"content":217},"og:description","Behind the scenes of any good advertising campaign, customer experience or data analysis is the lifting, shifting and transformation of millions of rows of raw data. At Impression our Solutions team comprises data engineers familiar with advertising platforms, APIs, various industry tooling and web scraping &#8212; and of course databases like customer data platforms. Check out the posts below.",{"property":219,"content":206},"og:url",{"property":221,"content":222},"og:site_name","Impression",{"property":224,"content":225},"og:image","https:\u002F\u002Fimages.impression.co.uk\u002F2021\u002F06\u002FABFPXguH-Opengraph-BLUE.jpg?auto=compress%2Cformat&q=90",{"property":227,"content":228},"og:image:width",1200,{"property":230,"content":231},"og:image:height",630,{"property":233,"content":234},"og:image:type","image\u002Fjpeg",{"property":236,"content":237},"twitter:card","summary_large_image",{"property":239,"content":240},"twitter:site","@impressiontalk",{"@context":242,"@graph":243},"https:\u002F\u002Fschema.org",[244,252,262,272],{"@type":245,"@id":246,"url":246,"name":197,"isPartOf":247,"breadcrumb":249,"inLanguage":251},"CollectionPage","https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fdata-engineering\u002F",{"@id":248},"https:\u002F\u002Fwww.impressiondigital.com\u002F#website",{"@id":250},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fdata-engineering\u002F#breadcrumb","en",{"@type":253,"@id":250,"itemListElement":254},"BreadcrumbList",[255,260],{"@type":256,"position":257,"name":258,"item":259},"ListItem",1,"Home","https:\u002F\u002Fwww.impressiondigital.com\u002F",{"@type":256,"position":261,"name":191},2,{"@type":263,"@id":248,"url":259,"name":222,"description":47,"publisher":264,"inLanguage":209,"potentialAction":266},"WebSite",{"@id":265},"https:\u002F\u002Fwww.impressiondigital.com\u002F#organization",{"@type":267,"target":268,"query-input":271},"SearchAction",{"@type":269,"urlTemplate":270},"EntryPoint","https:\u002F\u002Fwww.impressiondigital.com\u002Fsearch?q={search_term_string}","required name=search_term_string",{"@type":273,"@id":265,"name":222,"url":259,"logo":274,"image":280,"sameAs":281,"@context":285,"email":286,"foundingDate":287,"legalName":288,"vatID":289,"description":290,"telephone":291,"address":292,"location":299,"areaServed":332},"Organization",{"@type":275,"inLanguage":209,"@id":276,"url":277,"contentUrl":277,"width":278,"height":279,"caption":222},"ImageObject","https:\u002F\u002Fwww.impressiondigital.com\u002F#\u002Fschema\u002Flogo\u002Fimage\u002F","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F06\u002FA5LuTDrq-Impression_Wordmark.png",920,176,"https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F04\u002FFAVxDeOS-Nottingham.jpg",[282,283,284],"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fimpression-digital-limited","https:\u002F\u002Fwww.facebook.com\u002Fimpression\u002F","https:\u002F\u002Fwww.instagram.com\u002Fimpressiontalk\u002F","https:\u002F\u002Fwww.schema.org\u002F","hello@impressiondigital.com","2012-11-07","Impression Digital Limited","GB186363774","Impression is an award-winning digital marketing agency based in the UK and USA. We offer SEO agency, PPC agency, Digital PR agency and Analytics services to companies of all sizes across the UK, North America, Europe and beyond. Get in touch with us if you think we can work together.","01158 242 212",{"@type":293,"streetAddress":294,"addressLocality":295,"addressRegion":296,"postalCode":297,"addressCountry":298},"PostalAddress","Fothergill House, 16 King Street","Nottingham","Nottinghamshire","NG1 2AS","United Kingdom",[300,309,321],{"@type":301,"name":302,"geo":303,"address":307,"photo":280,"telephone":308},"Place","Impression Digital - Nottingham",{"@type":304,"latitude":305,"longitude":306},"GeoCoordinates","52.95501401025914","-1.1494887460285232",{"@type":293,"streetAddress":294,"addressLocality":295,"addressRegion":296,"postalCode":297,"addressCountry":298},"+44 01158 242 212",{"@type":301,"name":310,"geo":311,"address":314,"photo":319,"telephone":320},"Impression Digital - London",{"@type":304,"latitude":312,"longitude":313},"51.50237208377361","-0.09229841534284115",{"@type":293,"streetAddress":315,"addressLocality":316,"addressRegion":317,"postalCode":318,"addressCountry":298},"201 Borough High St","Southwark","London","SE1 1JA","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F04\u002FwD0pPVWz-London.jpg","+44 020 7112 8148",{"@type":301,"name":322,"geo":323,"address":326},"Impression Digital - New York",{"@type":304,"latitude":324,"longitude":325},"40.726722746949","-74.00527778220652",{"@type":293,"streetAddress":327,"addressLocality":328,"addressRegion":329,"postalCode":330,"addressCountry":331},"160 Varick St","New York","NY","10013","USA",[333,336,338],{"@type":334,"name":335},"Country","Worldwide",{"@type":334,"name":337},"GBR",{"@type":334,"name":331},{"self":340,"collection":350,"about":353,"wp:post_type":356,"curies":367},[341],{"href":342,"targetHints":343},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories\u002F280",{"allow":344},[345,346,347,348,349],"GET","POST","PUT","PATCH","DELETE",[351],{"href":352},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories",[354],{"href":355},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftaxonomies\u002Fcategory",[357,359,361,363,365],{"href":358},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts?categories=280",{"href":360},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwhite_papers?categories=280",{"href":362},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftools?categories=280",{"href":364},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwebinars?categories=280",{"href":366},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fevents?categories=280",[368],{"name":369,"href":370,"templated":29},"wp","https:\u002F\u002Fapi.w.org\u002F{rel}",{"id":11,"count":372,"description":373,"link":154,"name":155,"slug":374,"taxonomy":193,"parent":53,"meta":375,"acf":376,"head_links":377,"resource_count":378,"yoast_title":379,"yoast_meta":380,"yoast_json_ld":400,"_links":433,"path":154},129,"Here at Impression, ongoing research and training is a huge part of how we keep our \u003Ca href=\"\u002Fmedia-solutions\u002F\">Media Solutions\u003C\u002Fa> team up-to-date with the latest happenings in the world of web &amp; app analytics, martech, \u003Ca href=\"\u002Fmedia-solutions\u002Fdata-science\u002F\">data science\u003C\u002Fa> and \u003Ca href=\"\u002Fmedia-solutions\u002Fmedia-effectiveness\u002F\">media effectiveness\u003C\u002Fa>. We regularly share our thoughts on the latest digital news right here on our blog, so you can keep up to date too.\r\n\r\nFind out more about our \u003Ca href=\"\u002Fanalytics\u002F\">Analytics Agency\u003C\u002Fa> services, or browse our latest tips, advice and opinions below.","measurement",[],{"sub_title_override":47,"title_override":47},[],21,"Online Measurement, Analytics & Effectiveness Blog | Impression",[381,382,385,386,388,389,390,391,392,393,394,395,396,397,398,399],{"property":200,"content":379},{"property":383,"content":384},"description","Keeping up to date with the latest measurement and analytics trends and strategies can be difficult. Browse our tips and advice in our latest blogs!",{"name":202,"content":203},{"property":205,"content":387},"https:\u002F\u002Fadmin.impressiondigital.com\u002Fblog\u002Fcategory\u002Fmeasurement\u002F",{"name":208,"content":209},{"property":211,"content":212},{"property":214,"content":379},{"property":216,"content":384},{"property":219,"content":387},{"property":221,"content":222},{"property":224,"content":225},{"property":227,"content":228},{"property":230,"content":231},{"property":233,"content":234},{"property":236,"content":237},{"property":239,"content":240},{"@context":242,"@graph":401},[402,407,411,415],{"@type":245,"@id":403,"url":403,"name":379,"isPartOf":404,"description":384,"breadcrumb":405,"inLanguage":251},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fmeasurement\u002F",{"@id":248},{"@id":406},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fmeasurement\u002F#breadcrumb",{"@type":253,"@id":406,"itemListElement":408},[409,410],{"@type":256,"position":257,"name":258,"item":259},{"@type":256,"position":261,"name":155},{"@type":263,"@id":248,"url":259,"name":222,"description":47,"publisher":412,"inLanguage":209,"potentialAction":413},{"@id":265},{"@type":267,"target":414,"query-input":271},{"@type":269,"urlTemplate":270},{"@type":273,"@id":265,"name":222,"url":259,"logo":416,"image":280,"sameAs":417,"@context":285,"email":286,"foundingDate":287,"legalName":288,"vatID":289,"description":290,"telephone":291,"address":418,"location":419,"areaServed":429},{"@type":275,"inLanguage":209,"@id":276,"url":277,"contentUrl":277,"width":278,"height":279,"caption":222},[282,283,284],{"@type":293,"streetAddress":294,"addressLocality":295,"addressRegion":296,"postalCode":297,"addressCountry":298},[420,423,426],{"@type":301,"name":302,"geo":421,"address":422,"photo":280,"telephone":308},{"@type":304,"latitude":305,"longitude":306},{"@type":293,"streetAddress":294,"addressLocality":295,"addressRegion":296,"postalCode":297,"addressCountry":298},{"@type":301,"name":310,"geo":424,"address":425,"photo":319,"telephone":320},{"@type":304,"latitude":312,"longitude":313},{"@type":293,"streetAddress":315,"addressLocality":316,"addressRegion":317,"postalCode":318,"addressCountry":298},{"@type":301,"name":322,"geo":427,"address":428},{"@type":304,"latitude":324,"longitude":325},{"@type":293,"streetAddress":327,"addressLocality":328,"addressRegion":329,"postalCode":330,"addressCountry":331},[430,431,432],{"@type":334,"name":335},{"@type":334,"name":337},{"@type":334,"name":331},{"self":434,"collection":439,"about":441,"wp:post_type":443,"curies":454},[435],{"href":436,"targetHints":437},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories\u002F41",{"allow":438},[345,346,347,348,349],[440],{"href":352},[442],{"href":355},[444,446,448,450,452],{"href":445},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts?categories=41",{"href":447},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwhite_papers?categories=41",{"href":449},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftools?categories=41",{"href":451},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fwebinars?categories=41",{"href":453},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fevents?categories=41",[455],{"name":369,"href":370,"templated":29},[],[],[459,461,463,464],{"path":460,"name":258},"\u002F",{"path":140,"name":462},"Blog",{"path":154,"name":155},{"path":465,"name":30},null,[467,468],{"id":10,"name":191,"path":190},{"id":11,"name":155,"path":154},{"title":470,"script":471,"meta":544,"link":574},"A deep dive into Google Big Query ML | Impression",[472],{"type":473,"key":474,"innerHTML":475},"application\u002Fld+json","yoast-json-ld",{"@context":242,"@graph":476},[477,494,502,505,513,517,535],{"@type":478,"@id":479,"isPartOf":480,"author":482,"headline":30,"datePublished":484,"dateModified":485,"mainEntityOfPage":486,"wordCount":487,"publisher":488,"image":490,"thumbnailUrl":492,"articleSection":493,"inLanguage":209},"Article","https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-big-query-ml\u002F#article",{"@id":481},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-big-query-ml\u002F",{"name":35,"@id":483},"https:\u002F\u002Fadmin.impressiondigital.com\u002F#\u002Fschema\u002Fperson\u002Fa18b79c97abbcb2444ace02aa88250ae","2024-08-01T14:45:33+00:00","2026-08-25T09:29:44+00:00",{"@id":481},1995,{"@id":489},"https:\u002F\u002Fadmin.impressiondigital.com\u002F#organization",{"@id":491},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-big-query-ml\u002F#primaryimage","https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fadrien-delforge-yZrhORWUATg-unsplash.jpg?auto=compress%2Cformat&q=90",[191,155],{"@type":495,"@id":481,"url":481,"name":470,"isPartOf":496,"primaryImageOfPage":497,"image":498,"thumbnailUrl":492,"datePublished":484,"dateModified":485,"description":499,"breadcrumb":500,"inLanguage":251},"WebPage",{"@id":248},{"@id":491},{"@id":491},"Google BigQuery ML is a powerful tool that allows data scientists and analysts to build and deploy machine learning models directly within Google BigQuery.",{"@id":501},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-big-query-ml\u002F#breadcrumb",{"@type":275,"inLanguage":209,"@id":491,"url":492,"contentUrl":492,"width":503,"height":504},2400,1800,{"@type":253,"@id":501,"itemListElement":506},[507,508,510,512],{"@type":256,"position":257,"name":258,"item":259},{"@type":256,"position":261,"name":462,"item":509},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002F",{"@type":256,"position":511,"name":155,"item":403},3,{"@type":256,"position":147,"name":30},{"@type":263,"@id":248,"url":259,"name":222,"description":47,"publisher":514,"inLanguage":209,"potentialAction":515},{"@id":265},{"@type":267,"target":516,"query-input":271},{"@type":269,"urlTemplate":270},{"@type":273,"@id":265,"name":222,"url":259,"logo":518,"image":280,"sameAs":519,"@context":285,"email":286,"foundingDate":287,"legalName":288,"vatID":289,"description":290,"telephone":291,"address":520,"location":521,"areaServed":531},{"@type":275,"inLanguage":209,"@id":276,"url":277,"contentUrl":277,"width":278,"height":279,"caption":222},[282,283,284],{"@type":293,"streetAddress":294,"addressLocality":295,"addressRegion":296,"postalCode":297,"addressCountry":298},[522,525,528],{"@type":301,"name":302,"geo":523,"address":524,"photo":280,"telephone":308},{"@type":304,"latitude":305,"longitude":306},{"@type":293,"streetAddress":294,"addressLocality":295,"addressRegion":296,"postalCode":297,"addressCountry":298},{"@type":301,"name":310,"geo":526,"address":527,"photo":319,"telephone":320},{"@type":304,"latitude":312,"longitude":313},{"@type":293,"streetAddress":315,"addressLocality":316,"addressRegion":317,"postalCode":318,"addressCountry":298},{"@type":301,"name":322,"geo":529,"address":530},{"@type":304,"latitude":324,"longitude":325},{"@type":293,"streetAddress":327,"addressLocality":328,"addressRegion":329,"postalCode":330,"addressCountry":331},[532,533,534],{"@type":334,"name":335},{"@type":334,"name":337},{"@type":334,"name":331},{"@type":536,"@id":537,"name":35,"image":538,"description":37,"sameAs":541,"url":543},"Person","https:\u002F\u002Fwww.impressiondigital.com\u002F#\u002Fschema\u002Fperson\u002Fa18b79c97abbcb2444ace02aa88250ae",{"@type":275,"inLanguage":209,"@id":539,"url":540,"contentUrl":540,"caption":35},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress&fit=fit&fm=jpg&h=96&q=90&w=9615847ead018a2de28b7216e39fc92f32","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F10\u002FHarry-Brace2.png?auto=compress&fit=fit&fm=jpg&h=96&q=90&w=96",[542],"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fharrison-brace-137b8482\u002F","https:\u002F\u002Fwww.impressiondigital.com\u002Fabout\u002Four-team\u002Fharry-brace\u002F",[545,546,547,549,550,551,552,553,554,557,559,561,563,564,565,566,568,569,571,573],{"name":383,"content":499},{"name":202,"content":203},{"property":208,"content":548},"en_GB",{"property":211,"content":212},{"property":214,"content":470},{"property":216,"content":499},{"property":219,"content":481},{"property":221,"content":222},{"property":555,"content":556},"article:publisher","https:\u002F\u002Fwww.facebook.com\u002Fimpression",{"property":558,"content":484},"article:published_time",{"property":560,"content":485},"article:modified_time",{"property":224,"content":562},"https:\u002F\u002Fimages.impression.co.uk\u002F2024\u002F08\u002Fopen-graph-big-query-ml.png?auto=compress%2Cformat&q=90",{"property":227,"content":228},{"property":230,"content":231},{"property":233,"content":90},{"name":567,"content":35},"author",{"name":236,"content":237},{"name":570,"content":562},"twitter:image",{"name":572,"content":240},"twitter:creator",{"name":239,"content":240},[]]