The ML.FEATURE_CROSS function

This document describes the ML.FEATURE_CROSS function, which lets you create feature crosses.

You can use this function with models that support manual feature preprocessing. For more information, see the following documents:

Syntax

ML.FEATURE_CROSS(struct_categorical_features [, degree])

Arguments

ML.FEATURE_CROSS takes the following arguments:

  • struct_categorical_features: a STRUCT<STRING> value that specifies the categorical features to cross. The maximum number of input features is 10. Don't specify unnamed features or duplicate features in struct_numerical_features.
  • degree: an INT64 value that specifies the highest degree of all combinations of features in the range of [2, 4]. The default value is 2.

Output

ML.FEATURE_CROSS returns a STRUCT<STRING> value that identifies all combinations of the crossed categorical features with a degree no larger than the degree value, except for 1-degree items (the original features) and self-crossing items. The field names in the output struct are concatenations of the original feature names.

Example

The following example crosses three features:

SELECT
ML.FEATURE_CROSS(STRUCT('a'ASf1,'b'ASf2,'c'ASf3))ASoutput;

The output looks similar to the following:

+---------------------------------------------+
| output |
+---------------------------------------------+
| {"f1_f2":"a_b","f1_f3":"a_c","f2_f3":"b_c"} |
+---------------------------------------------+

What's next

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年10月24日 UTC.