{
  "pipelineSpec": {
    "components": {
      "comp-bigquery-create-dataset": {
        "executorLabel": "exec-bigquery-create-dataset",
        "inputDefinitions": {
          "parameters": {
            "dataset": {
              "type": "STRING"
            },
            "exists_ok": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-create-dataset-2": {
        "executorLabel": "exec-bigquery-create-dataset-2",
        "inputDefinitions": {
          "parameters": {
            "dataset": {
              "type": "STRING"
            },
            "exists_ok": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-create-model-job": {
        "executorLabel": "exec-bigquery-create-model-job",
        "inputDefinitions": {
          "parameters": {
            "job_configuration_query": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "model": {
              "artifactType": {
                "schemaTitle": "google.BQMLModel",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-delete-dataset-with-prefix": {
        "executorLabel": "exec-bigquery-delete-dataset-with-prefix",
        "inputDefinitions": {
          "parameters": {
            "dataset_prefix": {
              "type": "STRING"
            },
            "delete_contents": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-list-rows": {
        "executorLabel": "exec-bigquery-list-rows",
        "inputDefinitions": {
          "artifacts": {
            "table": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-list-rows-2": {
        "executorLabel": "exec-bigquery-list-rows-2",
        "inputDefinitions": {
          "artifacts": {
            "table": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-query-job": {
        "executorLabel": "exec-bigquery-query-job",
        "inputDefinitions": {
          "parameters": {
            "job_configuration_query": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "destination_table": {
              "artifactType": {
                "schemaTitle": "google.BQTable",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-query-job-2": {
        "executorLabel": "exec-bigquery-query-job-2",
        "inputDefinitions": {
          "parameters": {
            "job_configuration_query": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "destination_table": {
              "artifactType": {
                "schemaTitle": "google.BQTable",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-query-job-3": {
        "executorLabel": "exec-bigquery-query-job-3",
        "inputDefinitions": {
          "parameters": {
            "job_configuration_query": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "destination_table": {
              "artifactType": {
                "schemaTitle": "google.BQTable",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-query-job-4": {
        "executorLabel": "exec-bigquery-query-job-4",
        "inputDefinitions": {
          "parameters": {
            "job_configuration_query": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "destination_table": {
              "artifactType": {
                "schemaTitle": "google.BQTable",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-bigquery-query-job-5": {
        "executorLabel": "exec-bigquery-query-job-5",
        "inputDefinitions": {
          "parameters": {
            "job_configuration_query": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "destination_table": {
              "artifactType": {
                "schemaTitle": "google.BQTable",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-job-configuration-query": {
        "executorLabel": "exec-build-job-configuration-query",
        "inputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "priority": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "write_disposition": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-job-configuration-query-2": {
        "executorLabel": "exec-build-job-configuration-query-2",
        "inputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "priority": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "write_disposition": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-job-configuration-query-3": {
        "executorLabel": "exec-build-job-configuration-query-3",
        "inputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "priority": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "write_disposition": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-job-configuration-query-4": {
        "executorLabel": "exec-build-job-configuration-query-4",
        "inputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "priority": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "write_disposition": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-job-configuration-query-5": {
        "executorLabel": "exec-build-job-configuration-query-5",
        "inputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "priority": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "write_disposition": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-job-configuration-query-6": {
        "executorLabel": "exec-build-job-configuration-query-6",
        "inputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "priority": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "write_disposition": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-serialized-query-parameters": {
        "executorLabel": "exec-build-serialized-query-parameters",
        "inputDefinitions": {
          "parameters": {
            "forecast_horizon": {
              "type": "INT"
            },
            "forecast_horizon_off_by_one": {
              "type": "STRING"
            },
            "splits": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-serialized-query-parameters-2": {
        "executorLabel": "exec-build-serialized-query-parameters-2",
        "inputDefinitions": {
          "parameters": {
            "data_granularity_unit": {
              "type": "STRING"
            },
            "forecast_horizon": {
              "type": "INT"
            },
            "forecast_horizon_off_by_one": {
              "type": "STRING"
            },
            "max_order": {
              "type": "INT"
            },
            "splits": {
              "type": "STRING"
            },
            "window": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-build-serialized-query-parameters-3": {
        "executorLabel": "exec-build-serialized-query-parameters-3",
        "inputDefinitions": {
          "parameters": {
            "data_granularity_unit": {
              "type": "STRING"
            },
            "forecast_horizon": {
              "type": "INT"
            },
            "forecast_horizon_off_by_one": {
              "type": "STRING"
            },
            "max_order": {
              "type": "INT"
            },
            "splits": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-cond": {
        "executorLabel": "exec-cond",
        "inputDefinitions": {
          "parameters": {
            "false_str": {
              "type": "STRING"
            },
            "predicate": {
              "type": "STRING"
            },
            "true_str": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-create-metrics-artifact": {
        "executorLabel": "exec-create-metrics-artifact",
        "inputDefinitions": {
          "parameters": {
            "metrics_rows": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "evaluation_metrics": {
              "artifactType": {
                "schemaTitle": "system.Metrics",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-exit-handler-1": {
        "dag": {
          "outputs": {
            "artifacts": {
              "create-metrics-artifact-evaluation_metrics": {
                "artifactSelectors": [
                  {
                    "outputArtifactKey": "evaluation_metrics",
                    "producerSubtask": "create-metrics-artifact"
                  }
                ]
              }
            }
          },
          "tasks": {
            "bigquery-create-dataset": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-create-dataset"
              },
              "dependentTasks": [
                "get-table-location",
                "validate-inputs"
              ],
              "inputs": {
                "parameters": {
                  "dataset": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "tmp_{{$.pipeline_job_uuid}}"
                      }
                    }
                  },
                  "exists_ok": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "False"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  }
                }
              },
              "taskInfo": {
                "name": "create-tmp-dataset"
              }
            },
            "bigquery-create-dataset-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-create-dataset-2"
              },
              "dependentTasks": [
                "get-table-location",
                "maybe-replace-with-default",
                "validate-inputs"
              ],
              "inputs": {
                "parameters": {
                  "dataset": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "maybe-replace-with-default"
                    }
                  },
                  "exists_ok": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "1"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  }
                }
              },
              "taskInfo": {
                "name": "create-export-dataset"
              }
            },
            "bigquery-create-model-job": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-create-model-job"
              },
              "dependentTasks": [
                "bigquery-create-dataset-2",
                "build-serialized-query-parameters-3",
                "get-fte-suffix",
                "get-table-location"
              ],
              "inputs": {
                "parameters": {
                  "job_configuration_query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--get-fte-suffix-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-fte-suffix"
                    }
                  },
                  "pipelineparam--target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "pipelineparam--time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n      CREATE MODEL `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}.model_{{$.pipeline_job_uuid}}`\n      OPTIONS (\n          model_type = 'ARIMA_PLUS',\n          time_series_timestamp_col = '{{$.inputs.parameters['pipelineparam--time_column']}}',\n          time_series_id_col = '{{$.inputs.parameters['pipelineparam--time_series_identifier_column']}}',\n          time_series_data_col = '{{$.inputs.parameters['pipelineparam--target_column']}}',\n          horizon = @forecast_horizon,\n          auto_arima = True,\n          auto_arima_max_order = @max_order,\n          data_frequency = @data_granularity_unit,\n          holiday_region = 'GLOBAL',\n          clean_spikes_and_dips = True,\n          adjust_step_changes = True,\n          decompose_time_series = True\n      ) AS\n      SELECT\n        {{$.inputs.parameters['pipelineparam--time_series_identifier_column']}},\n        {{$.inputs.parameters['pipelineparam--time_column']}},\n        {{$.inputs.parameters['pipelineparam--target_column']}},\n      FROM `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}.fte_time_series_output_{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}`\n      WHERE\n        UPPER(split__{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}) IN UNNEST(@splits)\n        AND TIMESTAMP({{$.inputs.parameters['pipelineparam--time_column']}}) < @start_time\n  "
                      }
                    }
                  },
                  "query_parameters": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-serialized-query-parameters-3"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-serving-model"
              }
            },
            "bigquery-list-rows": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-list-rows"
              },
              "dependentTasks": [
                "bigquery-query-job",
                "get-table-location"
              ],
              "inputs": {
                "artifacts": {
                  "table": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "destination_table",
                      "producerTask": "bigquery-query-job"
                    }
                  }
                },
                "parameters": {
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  }
                }
              },
              "taskInfo": {
                "name": "bigquery-list-rows"
              }
            },
            "bigquery-list-rows-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-list-rows-2"
              },
              "dependentTasks": [
                "bigquery-query-job-4",
                "get-table-location"
              ],
              "inputs": {
                "artifacts": {
                  "table": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "destination_table",
                      "producerTask": "bigquery-query-job-4"
                    }
                  }
                },
                "parameters": {
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  }
                }
              },
              "taskInfo": {
                "name": "bigquery-list-rows-2"
              }
            },
            "bigquery-query-job": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-query-job"
              },
              "dependentTasks": [
                "bigquery-create-dataset-2",
                "build-job-configuration-query",
                "build-serialized-query-parameters",
                "get-fte-suffix",
                "get-table-location"
              ],
              "inputs": {
                "parameters": {
                  "job_configuration_query": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-job-configuration-query"
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--data_granularity_unit": {
                    "componentInputParameter": "pipelineparam--data_granularity_unit"
                  },
                  "pipelineparam--get-fte-suffix-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-fte-suffix"
                    }
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "pipelineparam--time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n      WITH\n        time_series_windows AS (\n          SELECT\n             FIRST_VALUE({{$.inputs.parameters['pipelineparam--time_column']}}) OVER (horizon) AS start_time,\n             COUNT(*) OVER (horizon) AS count,\n             FIRST_VALUE(window__{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}) OVER (horizon) AS window__{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}},\n           FROM `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}.fte_time_series_output_{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}`\n           WHERE UPPER(split__{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}) IN UNNEST(@splits)\n           WINDOW horizon AS (\n             PARTITION BY {{$.inputs.parameters['pipelineparam--time_series_identifier_column']}}\n             ORDER BY {{$.inputs.parameters['pipelineparam--time_column']}}\n             ROWS BETWEEN 0 PRECEDING AND @forecast_horizon FOLLOWING)\n        )\n      SELECT\n        start_time,\n        TIMESTAMP(DATETIME_ADD(\n          DATETIME(start_time),\n          INTERVAL @forecast_horizon {{$.inputs.parameters['pipelineparam--data_granularity_unit']}}\n        )) AS end_time,\n        SUM(count) AS count,\n        ROW_NUMBER() OVER () AS window_number,\n      FROM time_series_windows\n      WHERE window__{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}\n      GROUP BY start_time\n  "
                      }
                    }
                  },
                  "query_parameters": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-serialized-query-parameters"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-eval-windows-table"
              }
            },
            "bigquery-query-job-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-query-job-2"
              },
              "dependentTasks": [
                "bigquery-create-dataset",
                "get-table-location"
              ],
              "inputs": {
                "parameters": {
                  "job_configuration_query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n            CREATE TABLE `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-dataset_id']}}.metrics` (\n              predicted_on_{{$.inputs.parameters['pipelineparam--time_column']}} TIMESTAMP,\n              MAE FLOAT64,\n              MSE FLOAT64,\n              MAPE FLOAT64,\n              prediction_count INT64\n            )\n        "
                      }
                    }
                  },
                  "query_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-tmp-metrics-table"
              }
            },
            "bigquery-query-job-3": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-query-job-3"
              },
              "dependentTasks": [
                "bigquery-create-dataset",
                "get-table-location"
              ],
              "inputs": {
                "parameters": {
                  "job_configuration_query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "pipelineparam--time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n            CREATE TABLE `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-dataset_id']}}.evaluated_examples` (\n              {{$.inputs.parameters['pipelineparam--time_series_identifier_column']}} STRING,\n              {{$.inputs.parameters['pipelineparam--time_column']}} TIMESTAMP,\n              predicted_on_{{$.inputs.parameters['pipelineparam--time_column']}} TIMESTAMP,\n              {{$.inputs.parameters['pipelineparam--target_column']}} FLOAT64,\n              predicted_{{$.inputs.parameters['pipelineparam--target_column']}} STRUCT<value FLOAT64>\n            )\n        "
                      }
                    }
                  },
                  "query_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-evaluated-examples-table"
              }
            },
            "bigquery-query-job-4": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-query-job-4"
              },
              "dependentTasks": [
                "build-job-configuration-query-5",
                "for-loop-2",
                "get-table-location",
                "table-to-uri"
              ],
              "inputs": {
                "parameters": {
                  "job_configuration_query": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-job-configuration-query-5"
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--table-to-uri-uri": {
                    "taskOutputParameter": {
                      "outputParameterKey": "uri",
                      "producerTask": "table-to-uri"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n      SELECT\n        SUM(MAE * prediction_count) / SUM(prediction_count) AS MAE,\n        SQRT(SUM(MSE * prediction_count) / SUM(prediction_count)) AS RMSE,\n        SUM(MAPE * prediction_count) / SUM(prediction_count) AS MAPE,\n      FROM `{{$.inputs.parameters['pipelineparam--table-to-uri-uri']}}`\n  "
                      }
                    }
                  },
                  "query_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-backtest-table"
              }
            },
            "bigquery-query-job-5": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bigquery-query-job-5"
              },
              "dependentTasks": [
                "build-job-configuration-query-6",
                "for-loop-2",
                "get-table-location",
                "table-to-uri-2"
              ],
              "inputs": {
                "parameters": {
                  "job_configuration_query": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-job-configuration-query-6"
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--table-to-uri-2-uri": {
                    "taskOutputParameter": {
                      "outputParameterKey": "uri",
                      "producerTask": "table-to-uri-2"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "SELECT * FROM `{{$.inputs.parameters['pipelineparam--table-to-uri-2-uri']}}`"
                      }
                    }
                  },
                  "query_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "export-evaluated-examples-table"
              }
            },
            "build-job-configuration-query": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-job-configuration-query"
              },
              "dependentTasks": [
                "bigquery-create-dataset"
              ],
              "inputs": {
                "parameters": {
                  "dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-dataset_id']}}"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "priority": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "INTERACTIVE"
                      }
                    }
                  },
                  "project_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-project_id']}}"
                      }
                    }
                  },
                  "table_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "windows"
                      }
                    }
                  },
                  "write_disposition": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-job-configuration-query"
              }
            },
            "build-job-configuration-query-5": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-job-configuration-query-5"
              },
              "dependentTasks": [
                "bigquery-create-dataset",
                "cond"
              ],
              "inputs": {
                "parameters": {
                  "dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-dataset_id']}}"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--cond-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "cond"
                    }
                  },
                  "priority": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "INTERACTIVE"
                      }
                    }
                  },
                  "project_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-project_id']}}"
                      }
                    }
                  },
                  "table_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "final_metrics"
                      }
                    }
                  },
                  "write_disposition": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--cond-Output']}}"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-job-configuration-query-5"
              }
            },
            "build-job-configuration-query-6": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-job-configuration-query-6"
              },
              "dependentTasks": [
                "bigquery-create-dataset-2",
                "cond"
              ],
              "inputs": {
                "parameters": {
                  "dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--cond-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "cond"
                    }
                  },
                  "priority": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "INTERACTIVE"
                      }
                    }
                  },
                  "project_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}"
                      }
                    }
                  },
                  "table_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "evaluated_examples"
                      }
                    }
                  },
                  "write_disposition": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--cond-Output']}}"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-job-configuration-query-6"
              }
            },
            "build-serialized-query-parameters": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-serialized-query-parameters"
              },
              "inputs": {
                "parameters": {
                  "forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "forecast_horizon_off_by_one": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "1"
                      }
                    }
                  },
                  "splits": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[\"TEST\"]"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-serialized-query-parameters"
              }
            },
            "build-serialized-query-parameters-3": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-serialized-query-parameters-3"
              },
              "inputs": {
                "parameters": {
                  "data_granularity_unit": {
                    "componentInputParameter": "pipelineparam--data_granularity_unit"
                  },
                  "forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "forecast_horizon_off_by_one": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "False"
                      }
                    }
                  },
                  "max_order": {
                    "componentInputParameter": "pipelineparam--max_order"
                  },
                  "splits": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[\"TRAIN\", \"VALIDATE\", \"TEST\"]"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-serialized-query-parameters-3"
              }
            },
            "cond": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-cond"
              },
              "inputs": {
                "parameters": {
                  "false_str": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "WRITE_EMPTY"
                      }
                    }
                  },
                  "predicate": {
                    "componentInputParameter": "pipelineparam--override_destination"
                  },
                  "true_str": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "WRITE_TRUNCATE"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "cond"
              }
            },
            "create-metrics-artifact": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-create-metrics-artifact"
              },
              "dependentTasks": [
                "bigquery-list-rows-2"
              ],
              "inputs": {
                "parameters": {
                  "metrics_rows": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "bigquery-list-rows-2"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-metrics-artifact"
              }
            },
            "feature-transform-engine": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-feature-transform-engine"
              },
              "dependentTasks": [
                "bigquery-create-dataset-2",
                "parse-data-source",
                "parse-split-spec",
                "parse-window-config"
              ],
              "inputs": {
                "parameters": {
                  "autodetect_csv_schema": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "1"
                      }
                    }
                  },
                  "bigquery_staging_full_dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}"
                      }
                    }
                  },
                  "data_source_bigquery_table_path": {
                    "taskOutputParameter": {
                      "outputParameterKey": "data_source_bigquery_table_path_with_scheme",
                      "producerTask": "parse-data-source"
                    }
                  },
                  "data_source_csv_filenames": {
                    "taskOutputParameter": {
                      "outputParameterKey": "data_source_csv_filenames",
                      "producerTask": "parse-data-source"
                    }
                  },
                  "dataflow_disk_size_gb": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "40"
                      }
                    }
                  },
                  "dataflow_machine_type": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "n1-standard-16"
                      }
                    }
                  },
                  "dataflow_max_num_workers": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "25"
                      }
                    }
                  },
                  "dataflow_service_account": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "dataflow_subnetwork": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "dataflow_use_public_ips": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "true"
                      }
                    }
                  },
                  "dataset_level_custom_transformation_definitions": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  },
                  "dataset_level_transformations": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  },
                  "encryption_spec_key_name": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "feature_selection_algorithm": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "AMI"
                      }
                    }
                  },
                  "forecasting_apply_windowing": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "0"
                      }
                    }
                  },
                  "forecasting_available_at_forecast_columns": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "forecasting_context_window": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "0"
                      }
                    }
                  },
                  "forecasting_forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "forecasting_predefined_window_column": {
                    "taskOutputParameter": {
                      "outputParameterKey": "window_column",
                      "producerTask": "parse-window-config"
                    }
                  },
                  "forecasting_time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "forecasting_time_series_attribute_columns": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "forecasting_time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "forecasting_unavailable_at_forecast_columns": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "forecasting_window_max_count": {
                    "taskOutputParameter": {
                      "outputParameterKey": "window_max_count",
                      "producerTask": "parse-window-config"
                    }
                  },
                  "forecasting_window_stride_length": {
                    "taskOutputParameter": {
                      "outputParameterKey": "window_stride_length",
                      "producerTask": "parse-window-config"
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "materialized_examples_format": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "tfrecords_gzip"
                      }
                    }
                  },
                  "max_selected_features": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "1000"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "predefined_split_key": {
                    "taskOutputParameter": {
                      "outputParameterKey": "predefined_split_key",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "prediction_type": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "time_series"
                      }
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "run_distill": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "false"
                      }
                    }
                  },
                  "run_feature_selection": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "false"
                      }
                    }
                  },
                  "stratified_split_key": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "test_fraction": {
                    "taskOutputParameter": {
                      "outputParameterKey": "test_fraction",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "tf_auto_transform_features": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  },
                  "tf_custom_transformation_definitions": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  },
                  "tf_transformations_path": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "timestamp_split_key": {
                    "taskOutputParameter": {
                      "outputParameterKey": "timestamp_split_key",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "training_fraction": {
                    "taskOutputParameter": {
                      "outputParameterKey": "training_fraction",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "validation_fraction": {
                    "taskOutputParameter": {
                      "outputParameterKey": "validation_fraction",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "weight_column": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "feature-transform-engine"
              }
            },
            "for-loop-2": {
              "componentRef": {
                "name": "comp-for-loop-2"
              },
              "dependentTasks": [
                "bigquery-create-dataset",
                "bigquery-create-dataset-2",
                "bigquery-list-rows",
                "get-fte-suffix",
                "get-table-location",
                "table-to-uri",
                "table-to-uri-2"
              ],
              "inputs": {
                "parameters": {
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset"
                    }
                  },
                  "pipelineparam--bigquery-list-rows-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "bigquery-list-rows"
                    }
                  },
                  "pipelineparam--data_granularity_unit": {
                    "componentInputParameter": "pipelineparam--data_granularity_unit"
                  },
                  "pipelineparam--forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "pipelineparam--get-fte-suffix-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-fte-suffix"
                    }
                  },
                  "pipelineparam--get-table-location-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-table-location"
                    }
                  },
                  "pipelineparam--max_order": {
                    "componentInputParameter": "pipelineparam--max_order"
                  },
                  "pipelineparam--project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "pipelineparam--table-to-uri-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "table-to-uri-2"
                    }
                  },
                  "pipelineparam--table-to-uri-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "table-to-uri-2"
                    }
                  },
                  "pipelineparam--table-to-uri-2-table_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "table_id",
                      "producerTask": "table-to-uri-2"
                    }
                  },
                  "pipelineparam--table-to-uri-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "table-to-uri"
                    }
                  },
                  "pipelineparam--table-to-uri-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "table-to-uri"
                    }
                  },
                  "pipelineparam--table-to-uri-table_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "table_id",
                      "producerTask": "table-to-uri"
                    }
                  },
                  "pipelineparam--target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "pipelineparam--time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  }
                }
              },
              "parameterIterator": {
                "itemInput": "pipelineparam--bigquery-list-rows-Output-loop-item",
                "items": {
                  "inputParameter": "pipelineparam--bigquery-list-rows-Output"
                }
              },
              "taskInfo": {
                "name": "for-loop-2"
              }
            },
            "get-fte-suffix": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-get-fte-suffix"
              },
              "dependentTasks": [
                "bigquery-create-dataset-2",
                "feature-transform-engine"
              ],
              "inputs": {
                "parameters": {
                  "bigquery_staging_full_dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}"
                      }
                    }
                  },
                  "fte_table": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "fte_time_series_output"
                      }
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "dataset_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "taskOutputParameter": {
                      "outputParameterKey": "project_id",
                      "producerTask": "bigquery-create-dataset-2"
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  }
                }
              },
              "taskInfo": {
                "name": "get-fte-suffix"
              }
            },
            "get-table-location": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-get-table-location"
              },
              "dependentTasks": [
                "parse-data-source"
              ],
              "inputs": {
                "parameters": {
                  "default_location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "table": {
                    "taskOutputParameter": {
                      "outputParameterKey": "data_source_bigquery_table_path",
                      "producerTask": "parse-data-source"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "get-table-location"
              }
            },
            "maybe-replace-with-default": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-maybe-replace-with-default"
              },
              "inputs": {
                "parameters": {
                  "default": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "export_{{$.pipeline_job_uuid}}"
                      }
                    }
                  },
                  "value": {
                    "componentInputParameter": "pipelineparam--bigquery_destination_uri"
                  }
                }
              },
              "taskInfo": {
                "name": "maybe-replace-with-default"
              }
            },
            "parse-data-source": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-parse-data-source"
              },
              "inputs": {
                "parameters": {
                  "data_source_bigquery_table_path": {
                    "componentInputParameter": "pipelineparam--data_source_bigquery_table_path"
                  },
                  "data_source_csv_filenames": {
                    "componentInputParameter": "pipelineparam--data_source_csv_filenames"
                  }
                }
              },
              "taskInfo": {
                "name": "parse-data-source"
              }
            },
            "parse-split-spec": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-parse-split-spec"
              },
              "inputs": {
                "parameters": {
                  "predefined_split_key": {
                    "componentInputParameter": "pipelineparam--predefined_split_key"
                  },
                  "test_fraction": {
                    "componentInputParameter": "pipelineparam--test_fraction"
                  },
                  "timestamp_split_key": {
                    "componentInputParameter": "pipelineparam--timestamp_split_key"
                  },
                  "training_fraction": {
                    "componentInputParameter": "pipelineparam--training_fraction"
                  },
                  "validation_fraction": {
                    "componentInputParameter": "pipelineparam--validation_fraction"
                  }
                }
              },
              "taskInfo": {
                "name": "parse-split-spec"
              }
            },
            "parse-window-config": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-parse-window-config"
              },
              "inputs": {
                "parameters": {
                  "window_column": {
                    "componentInputParameter": "pipelineparam--window_column"
                  },
                  "window_max_count": {
                    "componentInputParameter": "pipelineparam--window_max_count"
                  },
                  "window_stride_length": {
                    "componentInputParameter": "pipelineparam--window_stride_length"
                  }
                }
              },
              "taskInfo": {
                "name": "parse-window-config"
              }
            },
            "table-to-uri": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-table-to-uri"
              },
              "dependentTasks": [
                "bigquery-query-job-2"
              ],
              "inputs": {
                "artifacts": {
                  "table": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "destination_table",
                      "producerTask": "bigquery-query-job-2"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "table-to-uri"
              }
            },
            "table-to-uri-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-table-to-uri-2"
              },
              "dependentTasks": [
                "bigquery-query-job-3"
              ],
              "inputs": {
                "artifacts": {
                  "table": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "destination_table",
                      "producerTask": "bigquery-query-job-3"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "table-to-uri-2"
              }
            },
            "validate-inputs": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-validate-inputs"
              },
              "dependentTasks": [
                "parse-data-source",
                "parse-split-spec",
                "parse-window-config"
              ],
              "inputs": {
                "parameters": {
                  "bigquery_destination_uri": {
                    "componentInputParameter": "pipelineparam--bigquery_destination_uri"
                  },
                  "data_source_bigquery_table_path": {
                    "taskOutputParameter": {
                      "outputParameterKey": "data_source_bigquery_table_path",
                      "producerTask": "parse-data-source"
                    }
                  },
                  "data_source_csv_filenames": {
                    "taskOutputParameter": {
                      "outputParameterKey": "data_source_csv_filenames",
                      "producerTask": "parse-data-source"
                    }
                  },
                  "predefined_split_key": {
                    "taskOutputParameter": {
                      "outputParameterKey": "predefined_split_key",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "test_fraction": {
                    "taskOutputParameter": {
                      "outputParameterKey": "test_fraction",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "timestamp_split_key": {
                    "taskOutputParameter": {
                      "outputParameterKey": "timestamp_split_key",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "training_fraction": {
                    "taskOutputParameter": {
                      "outputParameterKey": "training_fraction",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "validation_fraction": {
                    "taskOutputParameter": {
                      "outputParameterKey": "validation_fraction",
                      "producerTask": "parse-split-spec"
                    }
                  },
                  "window_column": {
                    "taskOutputParameter": {
                      "outputParameterKey": "window_column",
                      "producerTask": "parse-window-config"
                    }
                  },
                  "window_max_count": {
                    "taskOutputParameter": {
                      "outputParameterKey": "window_max_count",
                      "producerTask": "parse-window-config"
                    }
                  },
                  "window_stride_length": {
                    "taskOutputParameter": {
                      "outputParameterKey": "window_stride_length",
                      "producerTask": "parse-window-config"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "validate-inputs"
              }
            }
          }
        },
        "inputDefinitions": {
          "parameters": {
            "pipelineparam--bigquery_destination_uri": {
              "type": "STRING"
            },
            "pipelineparam--data_granularity_unit": {
              "type": "STRING"
            },
            "pipelineparam--data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "pipelineparam--data_source_csv_filenames": {
              "type": "STRING"
            },
            "pipelineparam--forecast_horizon": {
              "type": "INT"
            },
            "pipelineparam--location": {
              "type": "STRING"
            },
            "pipelineparam--max_order": {
              "type": "INT"
            },
            "pipelineparam--override_destination": {
              "type": "STRING"
            },
            "pipelineparam--predefined_split_key": {
              "type": "STRING"
            },
            "pipelineparam--project": {
              "type": "STRING"
            },
            "pipelineparam--root_dir": {
              "type": "STRING"
            },
            "pipelineparam--target_column": {
              "type": "STRING"
            },
            "pipelineparam--test_fraction": {
              "type": "DOUBLE"
            },
            "pipelineparam--time_column": {
              "type": "STRING"
            },
            "pipelineparam--time_series_identifier_column": {
              "type": "STRING"
            },
            "pipelineparam--timestamp_split_key": {
              "type": "STRING"
            },
            "pipelineparam--training_fraction": {
              "type": "DOUBLE"
            },
            "pipelineparam--validation_fraction": {
              "type": "DOUBLE"
            },
            "pipelineparam--window_column": {
              "type": "STRING"
            },
            "pipelineparam--window_max_count": {
              "type": "INT"
            },
            "pipelineparam--window_stride_length": {
              "type": "INT"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "create-metrics-artifact-evaluation_metrics": {
              "artifactType": {
                "schemaTitle": "system.Metrics",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-feature-transform-engine": {
        "executorLabel": "exec-feature-transform-engine",
        "inputDefinitions": {
          "parameters": {
            "autodetect_csv_schema": {
              "type": "STRING"
            },
            "bigquery_staging_full_dataset_id": {
              "type": "STRING"
            },
            "data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "data_source_csv_filenames": {
              "type": "STRING"
            },
            "dataflow_disk_size_gb": {
              "type": "INT"
            },
            "dataflow_machine_type": {
              "type": "STRING"
            },
            "dataflow_max_num_workers": {
              "type": "INT"
            },
            "dataflow_service_account": {
              "type": "STRING"
            },
            "dataflow_subnetwork": {
              "type": "STRING"
            },
            "dataflow_use_public_ips": {
              "type": "STRING"
            },
            "dataset_level_custom_transformation_definitions": {
              "type": "STRING"
            },
            "dataset_level_transformations": {
              "type": "STRING"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "feature_selection_algorithm": {
              "type": "STRING"
            },
            "forecasting_apply_windowing": {
              "type": "STRING"
            },
            "forecasting_available_at_forecast_columns": {
              "type": "STRING"
            },
            "forecasting_context_window": {
              "type": "INT"
            },
            "forecasting_forecast_horizon": {
              "type": "INT"
            },
            "forecasting_predefined_window_column": {
              "type": "STRING"
            },
            "forecasting_time_column": {
              "type": "STRING"
            },
            "forecasting_time_series_attribute_columns": {
              "type": "STRING"
            },
            "forecasting_time_series_identifier_column": {
              "type": "STRING"
            },
            "forecasting_unavailable_at_forecast_columns": {
              "type": "STRING"
            },
            "forecasting_window_max_count": {
              "type": "INT"
            },
            "forecasting_window_stride_length": {
              "type": "INT"
            },
            "location": {
              "type": "STRING"
            },
            "materialized_examples_format": {
              "type": "STRING"
            },
            "max_selected_features": {
              "type": "INT"
            },
            "predefined_split_key": {
              "type": "STRING"
            },
            "prediction_type": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "root_dir": {
              "type": "STRING"
            },
            "run_distill": {
              "type": "STRING"
            },
            "run_feature_selection": {
              "type": "STRING"
            },
            "stratified_split_key": {
              "type": "STRING"
            },
            "target_column": {
              "type": "STRING"
            },
            "test_fraction": {
              "type": "DOUBLE"
            },
            "tf_auto_transform_features": {
              "type": "STRING"
            },
            "tf_custom_transformation_definitions": {
              "type": "STRING"
            },
            "tf_transformations_path": {
              "type": "STRING"
            },
            "timestamp_split_key": {
              "type": "STRING"
            },
            "training_fraction": {
              "type": "DOUBLE"
            },
            "validation_fraction": {
              "type": "DOUBLE"
            },
            "weight_column": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "dataset_stats": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "feature_ranking": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "instance_schema": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "materialized_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "training_schema": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "transform_output": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "bigquery_downsampled_test_split_uri": {
              "type": "STRING"
            },
            "bigquery_test_split_uri": {
              "type": "STRING"
            },
            "gcp_resources": {
              "type": "STRING"
            },
            "split_example_counts": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-for-loop-2": {
        "dag": {
          "tasks": {
            "build-job-configuration-query-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-job-configuration-query-2"
              },
              "dependentTasks": [
                "get-window-query-priority"
              ],
              "inputs": {
                "parameters": {
                  "dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "pipelineparam--get-window-query-priority-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-window-query-priority"
                    }
                  },
                  "priority": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--get-window-query-priority-Output']}}"
                      }
                    }
                  },
                  "project_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "table_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "write_disposition": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-job-configuration-query-2"
              }
            },
            "build-job-configuration-query-3": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-job-configuration-query-3"
              },
              "dependentTasks": [
                "get-window-query-priority"
              ],
              "inputs": {
                "parameters": {
                  "dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--table-to-uri-dataset_id']}}"
                      }
                    }
                  },
                  "pipelineparam--get-window-query-priority-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-window-query-priority"
                    }
                  },
                  "pipelineparam--table-to-uri-dataset_id": {
                    "componentInputParameter": "pipelineparam--table-to-uri-dataset_id"
                  },
                  "pipelineparam--table-to-uri-project_id": {
                    "componentInputParameter": "pipelineparam--table-to-uri-project_id"
                  },
                  "pipelineparam--table-to-uri-table_id": {
                    "componentInputParameter": "pipelineparam--table-to-uri-table_id"
                  },
                  "priority": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--get-window-query-priority-Output']}}"
                      }
                    }
                  },
                  "project_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--table-to-uri-project_id']}}"
                      }
                    }
                  },
                  "table_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--table-to-uri-table_id']}}"
                      }
                    }
                  },
                  "write_disposition": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "WRITE_APPEND"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-job-configuration-query-3"
              }
            },
            "build-job-configuration-query-4": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-job-configuration-query-4"
              },
              "dependentTasks": [
                "get-window-query-priority"
              ],
              "inputs": {
                "parameters": {
                  "dataset_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--table-to-uri-2-dataset_id']}}"
                      }
                    }
                  },
                  "pipelineparam--get-window-query-priority-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-window-query-priority"
                    }
                  },
                  "pipelineparam--table-to-uri-2-dataset_id": {
                    "componentInputParameter": "pipelineparam--table-to-uri-2-dataset_id"
                  },
                  "pipelineparam--table-to-uri-2-project_id": {
                    "componentInputParameter": "pipelineparam--table-to-uri-2-project_id"
                  },
                  "pipelineparam--table-to-uri-2-table_id": {
                    "componentInputParameter": "pipelineparam--table-to-uri-2-table_id"
                  },
                  "priority": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--get-window-query-priority-Output']}}"
                      }
                    }
                  },
                  "project_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--table-to-uri-2-project_id']}}"
                      }
                    }
                  },
                  "table_id": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--table-to-uri-2-table_id']}}"
                      }
                    }
                  },
                  "write_disposition": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "WRITE_APPEND"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "build-job-configuration-query-4"
              }
            },
            "build-serialized-query-parameters-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-build-serialized-query-parameters-2"
              },
              "inputs": {
                "parameters": {
                  "data_granularity_unit": {
                    "componentInputParameter": "pipelineparam--data_granularity_unit"
                  },
                  "forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "forecast_horizon_off_by_one": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "False"
                      }
                    }
                  },
                  "max_order": {
                    "componentInputParameter": "pipelineparam--max_order"
                  },
                  "splits": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[\"TRAIN\", \"VALIDATE\", \"TEST\"]"
                      }
                    }
                  },
                  "window": {
                    "componentInputParameter": "pipelineparam--bigquery-list-rows-Output-loop-item"
                  }
                }
              },
              "taskInfo": {
                "name": "build-serialized-query-parameters-2"
              }
            },
            "get-value": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-get-value"
              },
              "inputs": {
                "parameters": {
                  "d": {
                    "componentInputParameter": "pipelineparam--bigquery-list-rows-Output-loop-item"
                  },
                  "key": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "window_number"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "get_window_number"
              }
            },
            "get-window-query-priority": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-get-window-query-priority"
              },
              "inputs": {
                "parameters": {
                  "max_interactive": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "50"
                      }
                    }
                  },
                  "window": {
                    "componentInputParameter": "pipelineparam--bigquery-list-rows-Output-loop-item"
                  }
                }
              },
              "taskInfo": {
                "name": "get-window-query-priority"
              }
            },
            "query-with-retry": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-query-with-retry"
              },
              "dependentTasks": [
                "build-job-configuration-query-2",
                "build-serialized-query-parameters-2",
                "get-value"
              ],
              "inputs": {
                "parameters": {
                  "destination_uri": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-dataset_id']}}.model_{{$.inputs.parameters['pipelineparam--get-value-Output']}}"
                      }
                    }
                  },
                  "job_configuration_query": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-job-configuration-query-2"
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--get-table-location-Output"
                  },
                  "max_retry_count": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "5"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-2-dataset_id"
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-2-project_id"
                  },
                  "pipelineparam--bigquery-create-dataset-dataset_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-dataset_id"
                  },
                  "pipelineparam--bigquery-create-dataset-project_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-project_id"
                  },
                  "pipelineparam--get-fte-suffix-Output": {
                    "componentInputParameter": "pipelineparam--get-fte-suffix-Output"
                  },
                  "pipelineparam--get-value-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-value"
                    }
                  },
                  "pipelineparam--target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "pipelineparam--time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n      CREATE MODEL `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-dataset_id']}}.model_{{$.inputs.parameters['pipelineparam--get-value-Output']}}`\n      OPTIONS (\n          model_type = 'ARIMA_PLUS',\n          time_series_timestamp_col = '{{$.inputs.parameters['pipelineparam--time_column']}}',\n          time_series_id_col = '{{$.inputs.parameters['pipelineparam--time_series_identifier_column']}}',\n          time_series_data_col = '{{$.inputs.parameters['pipelineparam--target_column']}}',\n          horizon = @forecast_horizon,\n          auto_arima = True,\n          auto_arima_max_order = @max_order,\n          data_frequency = @data_granularity_unit,\n          holiday_region = 'GLOBAL',\n          clean_spikes_and_dips = True,\n          adjust_step_changes = True,\n          decompose_time_series = True\n      ) AS\n      SELECT\n        {{$.inputs.parameters['pipelineparam--time_series_identifier_column']}},\n        {{$.inputs.parameters['pipelineparam--time_column']}},\n        {{$.inputs.parameters['pipelineparam--target_column']}},\n      FROM `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}.fte_time_series_output_{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}`\n      WHERE\n        UPPER(split__{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}) IN UNNEST(@splits)\n        AND TIMESTAMP({{$.inputs.parameters['pipelineparam--time_column']}}) < @start_time\n  "
                      }
                    }
                  },
                  "query_parameters": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-serialized-query-parameters-2"
                    }
                  },
                  "retry_wait_seconds": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "10"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "create-eval-model"
              }
            },
            "query-with-retry-2": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-query-with-retry-2"
              },
              "dependentTasks": [
                "build-job-configuration-query-3",
                "build-serialized-query-parameters-2",
                "query-with-retry"
              ],
              "inputs": {
                "parameters": {
                  "destination_uri": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "job_configuration_query": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-job-configuration-query-3"
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--get-table-location-Output"
                  },
                  "max_retry_count": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "5"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-2-dataset_id"
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-2-project_id"
                  },
                  "pipelineparam--forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "pipelineparam--get-fte-suffix-Output": {
                    "componentInputParameter": "pipelineparam--get-fte-suffix-Output"
                  },
                  "pipelineparam--query-with-retry-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "query-with-retry"
                    }
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n      SELECT\n        @start_time AS predicted_on_{{$.inputs.parameters['pipelineparam--time_column']}},\n        AVG(mean_absolute_error) AS MAE,\n        AVG(mean_squared_error) AS MSE,\n        AVG(mean_absolute_percentage_error) AS MAPE,\n        @prediction_count AS prediction_count,\n      FROM ML.EVALUATE(\n        MODEL `{{$.inputs.parameters['pipelineparam--query-with-retry-Output']}}`,\n        TABLE `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}.fte_time_series_output_{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}`,\n        STRUCT(True AS perform_aggregation, {{$.inputs.parameters['pipelineparam--forecast_horizon']}} as horizon))\n  "
                      }
                    }
                  },
                  "query_parameters": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-serialized-query-parameters-2"
                    }
                  },
                  "retry_wait_seconds": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "10"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "append-evaluation-metrics"
              }
            },
            "query-with-retry-3": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-query-with-retry-3"
              },
              "dependentTasks": [
                "build-job-configuration-query-4",
                "build-serialized-query-parameters-2",
                "query-with-retry"
              ],
              "inputs": {
                "parameters": {
                  "destination_uri": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "job_configuration_query": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-job-configuration-query-4"
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--get-table-location-Output"
                  },
                  "max_retry_count": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "5"
                      }
                    }
                  },
                  "pipelineparam--bigquery-create-dataset-2-dataset_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-2-dataset_id"
                  },
                  "pipelineparam--bigquery-create-dataset-2-project_id": {
                    "componentInputParameter": "pipelineparam--bigquery-create-dataset-2-project_id"
                  },
                  "pipelineparam--forecast_horizon": {
                    "componentInputParameter": "pipelineparam--forecast_horizon"
                  },
                  "pipelineparam--get-fte-suffix-Output": {
                    "componentInputParameter": "pipelineparam--get-fte-suffix-Output"
                  },
                  "pipelineparam--query-with-retry-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "query-with-retry"
                    }
                  },
                  "pipelineparam--target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "pipelineparam--time_column": {
                    "componentInputParameter": "pipelineparam--time_column"
                  },
                  "pipelineparam--time_series_identifier_column": {
                    "componentInputParameter": "pipelineparam--time_series_identifier_column"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "query": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "\n      SELECT\n        CAST(actual.{{$.inputs.parameters['pipelineparam--time_series_identifier_column']}} AS STRING)\n          AS {{$.inputs.parameters['pipelineparam--time_series_identifier_column']}},\n        TIMESTAMP(actual.{{$.inputs.parameters['pipelineparam--time_column']}}) AS {{$.inputs.parameters['pipelineparam--time_column']}},\n        @start_time AS predicted_on_{{$.inputs.parameters['pipelineparam--time_column']}},\n        CAST(actual.{{$.inputs.parameters['pipelineparam--target_column']}} AS FLOAT64) AS {{$.inputs.parameters['pipelineparam--target_column']}},\n        STRUCT(pred.forecast_value AS value) AS predicted_{{$.inputs.parameters['pipelineparam--target_column']}},\n      FROM\n        ML.FORECAST(\n          MODEL `{{$.inputs.parameters['pipelineparam--query-with-retry-Output']}}`,\n          STRUCT({{$.inputs.parameters['pipelineparam--forecast_horizon']}} AS horizon)) pred\n      JOIN `{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-project_id']}}.{{$.inputs.parameters['pipelineparam--bigquery-create-dataset-2-dataset_id']}}.fte_time_series_output_{{$.inputs.parameters['pipelineparam--get-fte-suffix-Output']}}` actual\n         ON\n           pred.forecast_timestamp = TIMESTAMP(actual.{{$.inputs.parameters['pipelineparam--time_column']}})\n           AND pred.{{$.inputs.parameters['pipelineparam--time_series_identifier_column']}}\n             = actual.{{$.inputs.parameters['pipelineparam--time_series_identifier_column']}}\n  "
                      }
                    }
                  },
                  "query_parameters": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "build-serialized-query-parameters-2"
                    }
                  },
                  "retry_wait_seconds": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "10"
                      }
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "append-evaluated-examples"
              }
            }
          }
        },
        "inputDefinitions": {
          "parameters": {
            "pipelineparam--bigquery-create-dataset-2-dataset_id": {
              "type": "STRING"
            },
            "pipelineparam--bigquery-create-dataset-2-project_id": {
              "type": "STRING"
            },
            "pipelineparam--bigquery-create-dataset-dataset_id": {
              "type": "STRING"
            },
            "pipelineparam--bigquery-create-dataset-project_id": {
              "type": "STRING"
            },
            "pipelineparam--bigquery-list-rows-Output": {
              "type": "STRING"
            },
            "pipelineparam--bigquery-list-rows-Output-loop-item": {
              "type": "STRING"
            },
            "pipelineparam--data_granularity_unit": {
              "type": "STRING"
            },
            "pipelineparam--forecast_horizon": {
              "type": "INT"
            },
            "pipelineparam--get-fte-suffix-Output": {
              "type": "STRING"
            },
            "pipelineparam--get-table-location-Output": {
              "type": "STRING"
            },
            "pipelineparam--max_order": {
              "type": "INT"
            },
            "pipelineparam--project": {
              "type": "STRING"
            },
            "pipelineparam--table-to-uri-2-dataset_id": {
              "type": "STRING"
            },
            "pipelineparam--table-to-uri-2-project_id": {
              "type": "STRING"
            },
            "pipelineparam--table-to-uri-2-table_id": {
              "type": "STRING"
            },
            "pipelineparam--table-to-uri-dataset_id": {
              "type": "STRING"
            },
            "pipelineparam--table-to-uri-project_id": {
              "type": "STRING"
            },
            "pipelineparam--table-to-uri-table_id": {
              "type": "STRING"
            },
            "pipelineparam--target_column": {
              "type": "STRING"
            },
            "pipelineparam--time_column": {
              "type": "STRING"
            },
            "pipelineparam--time_series_identifier_column": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-get-fte-suffix": {
        "executorLabel": "exec-get-fte-suffix",
        "inputDefinitions": {
          "parameters": {
            "bigquery_staging_full_dataset_id": {
              "type": "STRING"
            },
            "fte_table": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-get-table-location": {
        "executorLabel": "exec-get-table-location",
        "inputDefinitions": {
          "parameters": {
            "default_location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "table": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-get-value": {
        "executorLabel": "exec-get-value",
        "inputDefinitions": {
          "parameters": {
            "d": {
              "type": "STRING"
            },
            "key": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-get-window-query-priority": {
        "executorLabel": "exec-get-window-query-priority",
        "inputDefinitions": {
          "parameters": {
            "max_interactive": {
              "type": "INT"
            },
            "window": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-maybe-replace-with-default": {
        "executorLabel": "exec-maybe-replace-with-default",
        "inputDefinitions": {
          "parameters": {
            "default": {
              "type": "STRING"
            },
            "value": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-parse-data-source": {
        "executorLabel": "exec-parse-data-source",
        "inputDefinitions": {
          "parameters": {
            "data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "data_source_csv_filenames": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "data_source_bigquery_table_path_with_scheme": {
              "type": "STRING"
            },
            "data_source_csv_filenames": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-parse-split-spec": {
        "executorLabel": "exec-parse-split-spec",
        "inputDefinitions": {
          "parameters": {
            "predefined_split_key": {
              "type": "STRING"
            },
            "test_fraction": {
              "type": "DOUBLE"
            },
            "timestamp_split_key": {
              "type": "STRING"
            },
            "training_fraction": {
              "type": "DOUBLE"
            },
            "validation_fraction": {
              "type": "DOUBLE"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "predefined_split_key": {
              "type": "STRING"
            },
            "test_fraction": {
              "type": "DOUBLE"
            },
            "timestamp_split_key": {
              "type": "STRING"
            },
            "training_fraction": {
              "type": "DOUBLE"
            },
            "validation_fraction": {
              "type": "DOUBLE"
            }
          }
        }
      },
      "comp-parse-window-config": {
        "executorLabel": "exec-parse-window-config",
        "inputDefinitions": {
          "parameters": {
            "window_column": {
              "type": "STRING"
            },
            "window_max_count": {
              "type": "INT"
            },
            "window_stride_length": {
              "type": "INT"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "window_column": {
              "type": "STRING"
            },
            "window_max_count": {
              "type": "INT"
            },
            "window_stride_length": {
              "type": "INT"
            }
          }
        }
      },
      "comp-query-with-retry": {
        "executorLabel": "exec-query-with-retry",
        "inputDefinitions": {
          "parameters": {
            "destination_uri": {
              "type": "STRING"
            },
            "job_configuration_query": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "max_retry_count": {
              "type": "INT"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            },
            "retry_wait_seconds": {
              "type": "INT"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-query-with-retry-2": {
        "executorLabel": "exec-query-with-retry-2",
        "inputDefinitions": {
          "parameters": {
            "destination_uri": {
              "type": "STRING"
            },
            "job_configuration_query": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "max_retry_count": {
              "type": "INT"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            },
            "retry_wait_seconds": {
              "type": "INT"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-query-with-retry-3": {
        "executorLabel": "exec-query-with-retry-3",
        "inputDefinitions": {
          "parameters": {
            "destination_uri": {
              "type": "STRING"
            },
            "job_configuration_query": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "max_retry_count": {
              "type": "INT"
            },
            "project": {
              "type": "STRING"
            },
            "query": {
              "type": "STRING"
            },
            "query_parameters": {
              "type": "STRING"
            },
            "retry_wait_seconds": {
              "type": "INT"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-table-to-uri": {
        "executorLabel": "exec-table-to-uri",
        "inputDefinitions": {
          "artifacts": {
            "table": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "uri": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-table-to-uri-2": {
        "executorLabel": "exec-table-to-uri-2",
        "inputDefinitions": {
          "artifacts": {
            "table": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "dataset_id": {
              "type": "STRING"
            },
            "project_id": {
              "type": "STRING"
            },
            "table_id": {
              "type": "STRING"
            },
            "uri": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-validate-inputs": {
        "executorLabel": "exec-validate-inputs",
        "inputDefinitions": {
          "parameters": {
            "bigquery_destination_uri": {
              "type": "STRING"
            },
            "data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "data_source_csv_filenames": {
              "type": "STRING"
            },
            "predefined_split_key": {
              "type": "STRING"
            },
            "target_column": {
              "type": "STRING"
            },
            "test_fraction": {
              "type": "DOUBLE"
            },
            "time_column": {
              "type": "STRING"
            },
            "time_series_identifier_column": {
              "type": "STRING"
            },
            "timestamp_split_key": {
              "type": "STRING"
            },
            "training_fraction": {
              "type": "DOUBLE"
            },
            "validation_fraction": {
              "type": "DOUBLE"
            },
            "window_column": {
              "type": "STRING"
            },
            "window_max_count": {
              "type": "INT"
            },
            "window_stride_length": {
              "type": "INT"
            }
          }
        }
      }
    },
    "deploymentSpec": {
      "executors": {
        "exec-bigquery-create-dataset": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "bigquery_create_dataset"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef bigquery_create_dataset(\n    project: str,\n    location: str,\n    dataset: str,\n    exists_ok: bool = False,\n) -> NamedTuple('Outputs', [('project_id', str), ('dataset_id', str)]):\n  \"\"\"Creates a BigQuery dataset.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import collections\n\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  ref = client.create_dataset(dataset=dataset, exists_ok=exists_ok)\n  return collections.namedtuple('Outputs', ['project_id', 'dataset_id'])(\n      ref.project, ref.dataset_id)\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-bigquery-create-dataset-2": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "bigquery_create_dataset"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef bigquery_create_dataset(\n    project: str,\n    location: str,\n    dataset: str,\n    exists_ok: bool = False,\n) -> NamedTuple('Outputs', [('project_id', str), ('dataset_id', str)]):\n  \"\"\"Creates a BigQuery dataset.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import collections\n\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  ref = client.create_dataset(dataset=dataset, exists_ok=exists_ok)\n  return collections.namedtuple('Outputs', ['project_id', 'dataset_id'])(\n      ref.project, ref.dataset_id)\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-bigquery-create-model-job": {
          "container": {
            "args": [
              "--type",
              "BigqueryCreateModelJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--payload",
              "{\"configuration\": {\"query\": {{$.inputs.parameters['job_configuration_query']}}, \"labels\": {{$.inputs.parameters['labels']}}}}",
              "--job_configuration_query_override",
              "{\"query\": \"{{$.inputs.parameters['query']}}\", \"query_parameters\": {{$.inputs.parameters['query_parameters']}}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.bigquery.create_model.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.33"
          }
        },
        "exec-bigquery-delete-dataset-with-prefix": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "bigquery_delete_dataset_with_prefix"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef bigquery_delete_dataset_with_prefix(\n    project: str,\n    dataset_prefix: str,\n    delete_contents: bool = False,\n) -> None:\n  \"\"\"Deletes all BigQuery datasets matching the given prefix.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project)\n  for dataset in client.list_datasets(project=project):\n    if dataset.dataset_id.startswith(dataset_prefix):\n      client.delete_dataset(\n          dataset=dataset.dataset_id,\n          delete_contents=delete_contents)\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-bigquery-list-rows": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "bigquery_list_rows"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef bigquery_list_rows(\n    project: str,\n    location: str,\n    table: dsl.Input[dsl.Artifact],\n) -> List[Dict[str, str]]:\n  \"\"\"Lists the rows of the given BigQuery table.\n\n  Args:\n    project: The GCP project.\n    location: The GCP region.\n    table: A google.BQTable artifact.\n\n  Returns:\n    A list of dicts representing BigQuery rows. Rows are keyed by column, and\n    all values are stored as strings.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  metadata = table.metadata\n  rows = client.list_rows('.'.join(\n      [metadata['projectId'], metadata['datasetId'], metadata['tableId']]))\n  result = []\n  for row in rows:\n    result.append({col: str(value) for col, value in dict(row).items()})\n  return result\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-bigquery-list-rows-2": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "bigquery_list_rows"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef bigquery_list_rows(\n    project: str,\n    location: str,\n    table: dsl.Input[dsl.Artifact],\n) -> List[Dict[str, str]]:\n  \"\"\"Lists the rows of the given BigQuery table.\n\n  Args:\n    project: The GCP project.\n    location: The GCP region.\n    table: A google.BQTable artifact.\n\n  Returns:\n    A list of dicts representing BigQuery rows. Rows are keyed by column, and\n    all values are stored as strings.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  metadata = table.metadata\n  rows = client.list_rows('.'.join(\n      [metadata['projectId'], metadata['datasetId'], metadata['tableId']]))\n  result = []\n  for row in rows:\n    result.append({col: str(value) for col, value in dict(row).items()})\n  return result\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-bigquery-query-job": {
          "container": {
            "args": [
              "--type",
              "BigqueryQueryJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--payload",
              "{\"configuration\": {\"query\": {{$.inputs.parameters['job_configuration_query']}}, \"labels\": {{$.inputs.parameters['labels']}}}}",
              "--job_configuration_query_override",
              "{\"query\": \"{{$.inputs.parameters['query']}}\", \"query_parameters\": {{$.inputs.parameters['query_parameters']}}, \"destination_encryption_configuration\": {\"kmsKeyName\": \"\"}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.bigquery.query_job.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.33"
          }
        },
        "exec-bigquery-query-job-2": {
          "container": {
            "args": [
              "--type",
              "BigqueryQueryJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--payload",
              "{\"configuration\": {\"query\": {{$.inputs.parameters['job_configuration_query']}}, \"labels\": {{$.inputs.parameters['labels']}}}}",
              "--job_configuration_query_override",
              "{\"query\": \"{{$.inputs.parameters['query']}}\", \"query_parameters\": {{$.inputs.parameters['query_parameters']}}, \"destination_encryption_configuration\": {\"kmsKeyName\": \"\"}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.bigquery.query_job.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.33"
          }
        },
        "exec-bigquery-query-job-3": {
          "container": {
            "args": [
              "--type",
              "BigqueryQueryJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--payload",
              "{\"configuration\": {\"query\": {{$.inputs.parameters['job_configuration_query']}}, \"labels\": {{$.inputs.parameters['labels']}}}}",
              "--job_configuration_query_override",
              "{\"query\": \"{{$.inputs.parameters['query']}}\", \"query_parameters\": {{$.inputs.parameters['query_parameters']}}, \"destination_encryption_configuration\": {\"kmsKeyName\": \"\"}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.bigquery.query_job.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.33"
          }
        },
        "exec-bigquery-query-job-4": {
          "container": {
            "args": [
              "--type",
              "BigqueryQueryJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--payload",
              "{\"configuration\": {\"query\": {{$.inputs.parameters['job_configuration_query']}}, \"labels\": {{$.inputs.parameters['labels']}}}}",
              "--job_configuration_query_override",
              "{\"query\": \"{{$.inputs.parameters['query']}}\", \"query_parameters\": {{$.inputs.parameters['query_parameters']}}, \"destination_encryption_configuration\": {\"kmsKeyName\": \"\"}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.bigquery.query_job.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.33"
          }
        },
        "exec-bigquery-query-job-5": {
          "container": {
            "args": [
              "--type",
              "BigqueryQueryJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--payload",
              "{\"configuration\": {\"query\": {{$.inputs.parameters['job_configuration_query']}}, \"labels\": {{$.inputs.parameters['labels']}}}}",
              "--job_configuration_query_override",
              "{\"query\": \"{{$.inputs.parameters['query']}}\", \"query_parameters\": {{$.inputs.parameters['query_parameters']}}, \"destination_encryption_configuration\": {\"kmsKeyName\": \"\"}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.bigquery.query_job.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.33"
          }
        },
        "exec-build-job-configuration-query": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_job_configuration_query"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_job_configuration_query(\n    project_id: str = '',\n    dataset_id: str = '',\n    table_id: str = '',\n    write_disposition: str = '',\n    priority: str = 'INTERACTIVE',\n) -> dict:  # pylint: disable=g-bare-generic\n  \"\"\"Creates a JobConfigurationQuery object.\"\"\"\n  config = {\n      'priority': priority,\n  }\n  if all([project_id, dataset_id, table_id]):\n    config['destinationTable'] = {\n        'projectId': project_id,\n        'datasetId': dataset_id,\n        'tableId': table_id,\n    }\n  if write_disposition:\n    config['write_disposition'] = write_disposition\n  return config\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-job-configuration-query-2": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_job_configuration_query"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_job_configuration_query(\n    project_id: str = '',\n    dataset_id: str = '',\n    table_id: str = '',\n    write_disposition: str = '',\n    priority: str = 'INTERACTIVE',\n) -> dict:  # pylint: disable=g-bare-generic\n  \"\"\"Creates a JobConfigurationQuery object.\"\"\"\n  config = {\n      'priority': priority,\n  }\n  if all([project_id, dataset_id, table_id]):\n    config['destinationTable'] = {\n        'projectId': project_id,\n        'datasetId': dataset_id,\n        'tableId': table_id,\n    }\n  if write_disposition:\n    config['write_disposition'] = write_disposition\n  return config\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-job-configuration-query-3": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_job_configuration_query"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_job_configuration_query(\n    project_id: str = '',\n    dataset_id: str = '',\n    table_id: str = '',\n    write_disposition: str = '',\n    priority: str = 'INTERACTIVE',\n) -> dict:  # pylint: disable=g-bare-generic\n  \"\"\"Creates a JobConfigurationQuery object.\"\"\"\n  config = {\n      'priority': priority,\n  }\n  if all([project_id, dataset_id, table_id]):\n    config['destinationTable'] = {\n        'projectId': project_id,\n        'datasetId': dataset_id,\n        'tableId': table_id,\n    }\n  if write_disposition:\n    config['write_disposition'] = write_disposition\n  return config\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-job-configuration-query-4": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_job_configuration_query"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_job_configuration_query(\n    project_id: str = '',\n    dataset_id: str = '',\n    table_id: str = '',\n    write_disposition: str = '',\n    priority: str = 'INTERACTIVE',\n) -> dict:  # pylint: disable=g-bare-generic\n  \"\"\"Creates a JobConfigurationQuery object.\"\"\"\n  config = {\n      'priority': priority,\n  }\n  if all([project_id, dataset_id, table_id]):\n    config['destinationTable'] = {\n        'projectId': project_id,\n        'datasetId': dataset_id,\n        'tableId': table_id,\n    }\n  if write_disposition:\n    config['write_disposition'] = write_disposition\n  return config\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-job-configuration-query-5": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_job_configuration_query"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_job_configuration_query(\n    project_id: str = '',\n    dataset_id: str = '',\n    table_id: str = '',\n    write_disposition: str = '',\n    priority: str = 'INTERACTIVE',\n) -> dict:  # pylint: disable=g-bare-generic\n  \"\"\"Creates a JobConfigurationQuery object.\"\"\"\n  config = {\n      'priority': priority,\n  }\n  if all([project_id, dataset_id, table_id]):\n    config['destinationTable'] = {\n        'projectId': project_id,\n        'datasetId': dataset_id,\n        'tableId': table_id,\n    }\n  if write_disposition:\n    config['write_disposition'] = write_disposition\n  return config\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-job-configuration-query-6": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_job_configuration_query"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_job_configuration_query(\n    project_id: str = '',\n    dataset_id: str = '',\n    table_id: str = '',\n    write_disposition: str = '',\n    priority: str = 'INTERACTIVE',\n) -> dict:  # pylint: disable=g-bare-generic\n  \"\"\"Creates a JobConfigurationQuery object.\"\"\"\n  config = {\n      'priority': priority,\n  }\n  if all([project_id, dataset_id, table_id]):\n    config['destinationTable'] = {\n        'projectId': project_id,\n        'datasetId': dataset_id,\n        'tableId': table_id,\n    }\n  if write_disposition:\n    config['write_disposition'] = write_disposition\n  return config\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-serialized-query-parameters": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_serialized_query_parameters"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_serialized_query_parameters(\n    forecast_horizon: Optional[int] = None,\n    forecast_horizon_off_by_one: bool = False,\n    data_granularity_unit: Optional[str] = None,\n    splits: Optional[List[str]] = None,\n    window: Optional[Dict[str, str]] = None,\n    max_order: Optional[int] = None,\n) -> list:  # pylint: disable=g-bare-generic\n  \"\"\"Creates configuration JSON objects for BQML queries.\n\n  All query parameters will be stored in a list of QueryParameter objects:\n  https://cloud.google.com/bigquery/docs/reference/rest/v2/QueryParameter\n\n  Args:\n    forecast_horizon: The number of time periods into the future for which\n      forecasts will be created. Future periods start after the latest timestamp\n      for each time series.\n    forecast_horizon_off_by_one: If True, subtract 1 from the forecast horizon\n      in the query parameters.\n    data_granularity_unit: The data granularity unit. Accepted values are:\n      minute, hour, day, week, month, year.\n    splits: Dataset splits to be used to train the model.\n    window: Dict containing information about the forecast window the model\n      should have. If no window is provided, the window will start after the\n      latest period in the available data.\n    max_order: Integer between 1 and 5 representing the size of the parameter\n      search space for ARIMA_PLUS. 5 would result in the highest accuracy model,\n      but also the longest training runtime.\n\n  Returns:\n    A list of QueryParameters.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import datetime\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  # Maps Vertex Forecasting time units to BQML time units.\n  unit_map = {\n      'minute': 'per_minute',\n      'hour': 'hourly',\n      'day': 'daily',\n      'week': 'weekly',\n      'month': 'monthly',\n      'year': 'yearly',\n  }\n  query_parameters = []\n  if data_granularity_unit is not None:\n    if data_granularity_unit.lower() not in unit_map:\n      raise ValueError(\n          f'{data_granularity_unit} is not a valid time unit. '\n          f'Must be one of: {\", \".join(unit_map.keys())}')\n    query_parameters.append({\n        'name': 'data_granularity_unit',\n        'parameterType': {\n            'type': 'STRING'\n        },\n        'parameterValue': {\n            'value': unit_map[data_granularity_unit.lower()],\n        },\n    })\n  if max_order is not None:\n    query_parameters.append({\n        'name': 'max_order',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': str(max_order)\n        },\n    })\n  if forecast_horizon is not None:\n    if forecast_horizon_off_by_one:\n      forecast_horizon -= 1\n    query_parameters.append({\n        'name': 'forecast_horizon',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': str(forecast_horizon)\n        },\n    })\n  if splits is not None:\n    query_parameters.append({\n        'name': 'splits',\n        'parameterType': {\n            'type': 'ARRAY',\n            'arrayType': {\n                'type': 'STRING'\n            },\n        },\n        'parameterValue': {\n            'arrayValues': [{\n                'value': split\n            } for split in splits],\n        },\n    })\n\n  if window is not None:\n    query_parameters.append({\n        'name': 'prediction_count',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': window['count']\n        },\n    })\n\n  start_time = window['start_time'] if window else str(datetime.datetime.max)\n  query_parameters.append({\n      'name': 'start_time',\n      'parameterType': {\n          'type': 'TIMESTAMP'\n      },\n      'parameterValue': {\n          'value': start_time\n      },\n  })\n  return query_parameters\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-serialized-query-parameters-2": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_serialized_query_parameters"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_serialized_query_parameters(\n    forecast_horizon: Optional[int] = None,\n    forecast_horizon_off_by_one: bool = False,\n    data_granularity_unit: Optional[str] = None,\n    splits: Optional[List[str]] = None,\n    window: Optional[Dict[str, str]] = None,\n    max_order: Optional[int] = None,\n) -> list:  # pylint: disable=g-bare-generic\n  \"\"\"Creates configuration JSON objects for BQML queries.\n\n  All query parameters will be stored in a list of QueryParameter objects:\n  https://cloud.google.com/bigquery/docs/reference/rest/v2/QueryParameter\n\n  Args:\n    forecast_horizon: The number of time periods into the future for which\n      forecasts will be created. Future periods start after the latest timestamp\n      for each time series.\n    forecast_horizon_off_by_one: If True, subtract 1 from the forecast horizon\n      in the query parameters.\n    data_granularity_unit: The data granularity unit. Accepted values are:\n      minute, hour, day, week, month, year.\n    splits: Dataset splits to be used to train the model.\n    window: Dict containing information about the forecast window the model\n      should have. If no window is provided, the window will start after the\n      latest period in the available data.\n    max_order: Integer between 1 and 5 representing the size of the parameter\n      search space for ARIMA_PLUS. 5 would result in the highest accuracy model,\n      but also the longest training runtime.\n\n  Returns:\n    A list of QueryParameters.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import datetime\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  # Maps Vertex Forecasting time units to BQML time units.\n  unit_map = {\n      'minute': 'per_minute',\n      'hour': 'hourly',\n      'day': 'daily',\n      'week': 'weekly',\n      'month': 'monthly',\n      'year': 'yearly',\n  }\n  query_parameters = []\n  if data_granularity_unit is not None:\n    if data_granularity_unit.lower() not in unit_map:\n      raise ValueError(\n          f'{data_granularity_unit} is not a valid time unit. '\n          f'Must be one of: {\", \".join(unit_map.keys())}')\n    query_parameters.append({\n        'name': 'data_granularity_unit',\n        'parameterType': {\n            'type': 'STRING'\n        },\n        'parameterValue': {\n            'value': unit_map[data_granularity_unit.lower()],\n        },\n    })\n  if max_order is not None:\n    query_parameters.append({\n        'name': 'max_order',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': str(max_order)\n        },\n    })\n  if forecast_horizon is not None:\n    if forecast_horizon_off_by_one:\n      forecast_horizon -= 1\n    query_parameters.append({\n        'name': 'forecast_horizon',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': str(forecast_horizon)\n        },\n    })\n  if splits is not None:\n    query_parameters.append({\n        'name': 'splits',\n        'parameterType': {\n            'type': 'ARRAY',\n            'arrayType': {\n                'type': 'STRING'\n            },\n        },\n        'parameterValue': {\n            'arrayValues': [{\n                'value': split\n            } for split in splits],\n        },\n    })\n\n  if window is not None:\n    query_parameters.append({\n        'name': 'prediction_count',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': window['count']\n        },\n    })\n\n  start_time = window['start_time'] if window else str(datetime.datetime.max)\n  query_parameters.append({\n      'name': 'start_time',\n      'parameterType': {\n          'type': 'TIMESTAMP'\n      },\n      'parameterValue': {\n          'value': start_time\n      },\n  })\n  return query_parameters\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-build-serialized-query-parameters-3": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "build_serialized_query_parameters"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef build_serialized_query_parameters(\n    forecast_horizon: Optional[int] = None,\n    forecast_horizon_off_by_one: bool = False,\n    data_granularity_unit: Optional[str] = None,\n    splits: Optional[List[str]] = None,\n    window: Optional[Dict[str, str]] = None,\n    max_order: Optional[int] = None,\n) -> list:  # pylint: disable=g-bare-generic\n  \"\"\"Creates configuration JSON objects for BQML queries.\n\n  All query parameters will be stored in a list of QueryParameter objects:\n  https://cloud.google.com/bigquery/docs/reference/rest/v2/QueryParameter\n\n  Args:\n    forecast_horizon: The number of time periods into the future for which\n      forecasts will be created. Future periods start after the latest timestamp\n      for each time series.\n    forecast_horizon_off_by_one: If True, subtract 1 from the forecast horizon\n      in the query parameters.\n    data_granularity_unit: The data granularity unit. Accepted values are:\n      minute, hour, day, week, month, year.\n    splits: Dataset splits to be used to train the model.\n    window: Dict containing information about the forecast window the model\n      should have. If no window is provided, the window will start after the\n      latest period in the available data.\n    max_order: Integer between 1 and 5 representing the size of the parameter\n      search space for ARIMA_PLUS. 5 would result in the highest accuracy model,\n      but also the longest training runtime.\n\n  Returns:\n    A list of QueryParameters.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import datetime\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  # Maps Vertex Forecasting time units to BQML time units.\n  unit_map = {\n      'minute': 'per_minute',\n      'hour': 'hourly',\n      'day': 'daily',\n      'week': 'weekly',\n      'month': 'monthly',\n      'year': 'yearly',\n  }\n  query_parameters = []\n  if data_granularity_unit is not None:\n    if data_granularity_unit.lower() not in unit_map:\n      raise ValueError(\n          f'{data_granularity_unit} is not a valid time unit. '\n          f'Must be one of: {\", \".join(unit_map.keys())}')\n    query_parameters.append({\n        'name': 'data_granularity_unit',\n        'parameterType': {\n            'type': 'STRING'\n        },\n        'parameterValue': {\n            'value': unit_map[data_granularity_unit.lower()],\n        },\n    })\n  if max_order is not None:\n    query_parameters.append({\n        'name': 'max_order',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': str(max_order)\n        },\n    })\n  if forecast_horizon is not None:\n    if forecast_horizon_off_by_one:\n      forecast_horizon -= 1\n    query_parameters.append({\n        'name': 'forecast_horizon',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': str(forecast_horizon)\n        },\n    })\n  if splits is not None:\n    query_parameters.append({\n        'name': 'splits',\n        'parameterType': {\n            'type': 'ARRAY',\n            'arrayType': {\n                'type': 'STRING'\n            },\n        },\n        'parameterValue': {\n            'arrayValues': [{\n                'value': split\n            } for split in splits],\n        },\n    })\n\n  if window is not None:\n    query_parameters.append({\n        'name': 'prediction_count',\n        'parameterType': {\n            'type': 'INTEGER'\n        },\n        'parameterValue': {\n            'value': window['count']\n        },\n    })\n\n  start_time = window['start_time'] if window else str(datetime.datetime.max)\n  query_parameters.append({\n      'name': 'start_time',\n      'parameterType': {\n          'type': 'TIMESTAMP'\n      },\n      'parameterValue': {\n          'value': start_time\n      },\n  })\n  return query_parameters\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-cond": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "cond"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef cond(predicate: bool, true_str: str, false_str: str) -> str:\n  \"\"\"Returns true_str if predicate is true, else false_str.\"\"\"\n  return true_str if predicate else false_str\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-create-metrics-artifact": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "create_metrics_artifact"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef create_metrics_artifact(\n    metrics_rows: List[Dict[str, str]],\n    evaluation_metrics: dsl.Output[dsl.Metrics],\n) -> None:\n  \"\"\"Converts the rows of a metrics table into an Artifact.\"\"\"\n  # Use the Vertex Eval component's Metrics metadata naming from\n  # http://google3/third_party/py/google/cloud/aiplatform/aiplatform/metadata/schema/google/artifact_schema.py?cl=467006447&l=344\n  metric_name_map = {\n      'MAE': 'meanAbsoluteError',\n      'RMSE': 'rootMeanSquaredError',\n      'MAPE': 'meanAbsolutePercentageError',\n  }\n  metrics = {metric_name_map[k]: v for k, v in dict(metrics_rows[0]).items()}\n  evaluation_metrics.metadata = metrics\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-feature-transform-engine": {
          "container": {
            "args": [
              "feature_transform_engine",
              "--project={{$.inputs.parameters['project']}}",
              "--location={{$.inputs.parameters['location']}}",
              "--dataset_level_custom_transformation_definitions={{$.inputs.parameters['dataset_level_custom_transformation_definitions']}}",
              "--dataset_level_transformations={{$.inputs.parameters['dataset_level_transformations']}}",
              "--forecasting_time_column={{$.inputs.parameters['forecasting_time_column']}}",
              "--forecasting_time_series_identifier_column={{$.inputs.parameters['forecasting_time_series_identifier_column']}}",
              "--forecasting_time_series_attribute_columns={{$.inputs.parameters['forecasting_time_series_attribute_columns']}}",
              "--forecasting_unavailable_at_forecast_columns={{$.inputs.parameters['forecasting_unavailable_at_forecast_columns']}}",
              "--forecasting_available_at_forecast_columns={{$.inputs.parameters['forecasting_available_at_forecast_columns']}}",
              "--forecasting_forecast_horizon={{$.inputs.parameters['forecasting_forecast_horizon']}}",
              "--forecasting_context_window={{$.inputs.parameters['forecasting_context_window']}}",
              "--forecasting_predefined_window_column={{$.inputs.parameters['forecasting_predefined_window_column']}}",
              "--forecasting_window_stride_length={{$.inputs.parameters['forecasting_window_stride_length']}}",
              "--forecasting_window_max_count={{$.inputs.parameters['forecasting_window_max_count']}}",
              "--forecasting_apply_windowing={{$.inputs.parameters['forecasting_apply_windowing']}}",
              "--predefined_split_key={{$.inputs.parameters['predefined_split_key']}}",
              "--stratified_split_key={{$.inputs.parameters['stratified_split_key']}}",
              "--timestamp_split_key={{$.inputs.parameters['timestamp_split_key']}}",
              "--training_fraction={{$.inputs.parameters['training_fraction']}}",
              "--validation_fraction={{$.inputs.parameters['validation_fraction']}}",
              "--test_fraction={{$.inputs.parameters['test_fraction']}}",
              "--tf_auto_transform_features={{$.inputs.parameters['tf_auto_transform_features']}}",
              "--tf_custom_transformation_definitions={{$.inputs.parameters['tf_custom_transformation_definitions']}}",
              "--tf_transformations_path={{$.inputs.parameters['tf_transformations_path']}}",
              "--data_source_csv_filenames={{$.inputs.parameters['data_source_csv_filenames']}}",
              "--data_source_bigquery_table_path={{$.inputs.parameters['data_source_bigquery_table_path']}}",
              "--bigquery_staging_full_dataset_id={{$.inputs.parameters['bigquery_staging_full_dataset_id']}}",
              "--target_column={{$.inputs.parameters['target_column']}}",
              "--weight_column={{$.inputs.parameters['weight_column']}}",
              "--prediction_type={{$.inputs.parameters['prediction_type']}}",
              "--run_distill={{$.inputs.parameters['run_distill']}}",
              "--run_feature_selection={{$.inputs.parameters['run_feature_selection']}}",
              "--materialized_examples_format={{$.inputs.parameters['materialized_examples_format']}}",
              "--max_selected_features={{$.inputs.parameters['max_selected_features']}}",
              "--feature_selection_staging_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/feature_selection_staging_dir",
              "--feature_selection_algorithm={{$.inputs.parameters['feature_selection_algorithm']}}",
              "--feature_ranking_path={{$.outputs.artifacts['feature_ranking'].uri}}",
              "--error_file_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.txt",
              "--stats_result_path={{$.outputs.artifacts['dataset_stats'].uri}}",
              "--transform_output_artifact_path={{$.outputs.artifacts['transform_output'].uri}}",
              "--transform_output_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/transform",
              "--materialized_examples_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/materialized",
              "--export_data_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/export",
              "--materialized_data_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/materialized_data",
              "--materialized_data_artifact_path={{$.outputs.artifacts['materialized_data'].uri}}",
              "--bigquery_test_split_uri_path={{$.outputs.parameters['bigquery_test_split_uri'].output_file}}",
              "--bigquery_downsampled_test_split_uri_path={{$.outputs.parameters['bigquery_downsampled_test_split_uri'].output_file}}",
              "--split_example_counts_path={{$.outputs.parameters['split_example_counts'].output_file}}",
              "--instance_schema_path={{$.outputs.artifacts['instance_schema'].path}}",
              "--training_schema_path={{$.outputs.artifacts['training_schema'].path}}",
              "--job_name=feature-transform-engine-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}",
              "--dataflow_project={{$.inputs.parameters['project']}}",
              "--dataflow_staging_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_staging",
              "--dataflow_tmp_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_tmp",
              "--dataflow_max_num_workers={{$.inputs.parameters['dataflow_max_num_workers']}}",
              "--dataflow_machine_type={{$.inputs.parameters['dataflow_machine_type']}}",
              "--dataflow_worker_container_image=us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20230322_0325",
              "--feature_transform_engine_docker_uri=us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20230322_0325",
              "--dataflow_disk_size_gb={{$.inputs.parameters['dataflow_disk_size_gb']}}",
              "--dataflow_subnetwork_fully_qualified={{$.inputs.parameters['dataflow_subnetwork']}}",
              "--dataflow_use_public_ips={{$.inputs.parameters['dataflow_use_public_ips']}}",
              "--dataflow_service_account={{$.inputs.parameters['dataflow_service_account']}}",
              "--dataflow_kms_key={{$.inputs.parameters['encryption_spec_key_name']}}",
              "--autodetect_csv_schema={{$.inputs.parameters['autodetect_csv_schema']}}",
              "--gcp_resources_path={{$.outputs.parameters['gcp_resources'].output_file}}"
            ],
            "image": "us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20230322_0325"
          }
        },
        "exec-get-fte-suffix": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "get_fte_suffix"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef get_fte_suffix(\n    project: str,\n    location: str,\n    bigquery_staging_full_dataset_id: str,\n    fte_table: str,\n) -> str:\n  \"\"\"Infers the FTE suffix from the intermediate FTE table name.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  for table in client.list_tables(bigquery_staging_full_dataset_id):\n    if table.table_id.startswith(fte_table):\n      return table.table_id[len(fte_table) + 1:]\n  raise ValueError(\n      f'No FTE output tables found in {bigquery_staging_full_dataset_id}.')\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-get-table-location": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "get_table_location"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef get_table_location(\n    project: str,\n    table: Optional[str],\n    default_location: str = '',\n) -> str:\n  \"\"\"Returns the region the given table belongs to.\n\n  Args:\n    project: The GCP project.\n    table: The BigQuery table to get a location for.\n    default_location: Location to return if no table was given.\n\n  Returns:\n    A GCP region or multi-region.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  if not table or table == '-':\n    return default_location\n\n  client = bigquery.Client(project=project)\n  if table.startswith('bq://'):\n    table = table[len('bq://'):]\n  elif table.startswith('bigquery://'):\n    table = table[len('bigquery://'):]\n  return client.get_table(table).location\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-get-value": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "get_value"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef get_value(d: Dict[str, str], key: str) -> str:\n  return d[key]\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-get-window-query-priority": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "get_window_query_priority"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef get_window_query_priority(\n    window: Dict[str, str],\n    max_interactive: int = 100,\n) -> str:\n  \"\"\"Returns a query priority depending on the window number.\"\"\"\n  if int(window['window_number']) <= max_interactive:\n    return 'INTERACTIVE'\n  else:\n    return 'BATCH'\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-maybe-replace-with-default": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "maybe_replace_with_default"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef maybe_replace_with_default(value: str, default: str = '') -> str:\n  \"\"\"Replaces string with another value if it is a dash.\"\"\"\n  return default if not value or value == '-' else value\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-parse-data-source": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "parse_data_source"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef parse_data_source(\n    data_source_csv_filenames: Optional[str] = None,\n    data_source_bigquery_table_path: Optional[str] = None,\n) -> NamedTuple('Outputs', [\n    ('data_source_bigquery_table_path', str),\n    ('data_source_bigquery_table_path_with_scheme', str),\n    ('data_source_csv_filenames', str),\n]):\n  \"\"\"Converts the data source JSON into flat arguments.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import collections\n  import re\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  result = {\n      'data_source_csv_filenames': data_source_csv_filenames,\n      'data_source_bigquery_table_path': data_source_bigquery_table_path,\n  }\n  for k, v in list(result.items()):\n    is_optional = any([\n        v is None,\n        isinstance(v, str) and v in {'', '-'},\n    ])\n    if is_optional:\n      result.pop(k)\n  if 'data_source_bigquery_table_path' in result:\n    result['data_source_bigquery_table_path'] = re.sub(\n        '^bq://', '', result['data_source_bigquery_table_path'])\n    result['data_source_bigquery_table_path_with_scheme'] = (\n        'bq://' + result['data_source_bigquery_table_path'])\n  if 'data_source_csv_filenames' in result:\n    result['data_source_csv_filenames'] = data_source_csv_filenames\n  return collections.namedtuple('Outputs', [\n      'data_source_bigquery_table_path',\n      'data_source_bigquery_table_path_with_scheme',\n      'data_source_csv_filenames',\n  ])(\n      result.get('data_source_bigquery_table_path', ''),\n      result.get('data_source_bigquery_table_path_with_scheme', ''),\n      result.get('data_source_csv_filenames', ''),\n  )\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-parse-split-spec": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "parse_split_spec"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef parse_split_spec(\n    predefined_split_key: Optional[str] = None,\n    timestamp_split_key: Optional[str] = None,\n    training_fraction: Optional[float] = None,\n    validation_fraction: Optional[float] = None,\n    test_fraction: Optional[float] = None,\n) -> NamedTuple('Outputs', [\n    ('training_fraction', float),\n    ('validation_fraction', float),\n    ('test_fraction', float),\n    ('predefined_split_key', str),\n    ('timestamp_split_key', str),\n]):\n  \"\"\"Extracts the split column from a split spec JSON.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import collections\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  result = {\n      'predefined_split_key': predefined_split_key,\n      'timestamp_split_key': timestamp_split_key,\n      'training_fraction': training_fraction,\n      'validation_fraction': validation_fraction,\n      'test_fraction': test_fraction,\n  }\n  for k, v in list(result.items()):\n    is_optional = any([\n        v is None,\n        isinstance(v, str) and v in {'', '-'},\n        isinstance(v, float) and v in {0.0, -1.0},\n    ])\n    if is_optional:\n      result.pop(k)\n\n  return collections.namedtuple(\n      'Outputs',\n      [\n          'training_fraction',\n          'validation_fraction',\n          'test_fraction',\n          'predefined_split_key',\n          'timestamp_split_key',\n      ],\n  )(\n      result.get('training_fraction', 0.0),\n      result.get('validation_fraction', 0.0),\n      result.get('test_fraction', 0.0),\n      result.get('predefined_split_key', ''),\n      result.get('timestamp_split_key', ''),\n  )\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-parse-window-config": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "parse_window_config"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef parse_window_config(\n    window_column: Optional[str] = None,\n    window_stride_length: Optional[int] = None,\n    window_max_count: Optional[int] = None,\n) -> NamedTuple('Outputs', [\n    ('window_column', str),\n    ('window_stride_length', int),\n    ('window_max_count', int),\n]):\n  \"\"\"Converts the data source JSON into flat arguments.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import collections\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  result = {\n      'window_column': window_column,\n      'window_stride_length': window_stride_length,\n      'window_max_count': window_max_count,\n  }\n  for k, v in list(result.items()):\n    is_optional = any([\n        v is None,\n        isinstance(v, str) and v in {'', '-'},\n        isinstance(v, int) and v in {0, -1},\n    ])\n    if is_optional:\n      result.pop(k)\n  if not result:\n    result['window_max_count'] = int(1e8)\n\n  return collections.namedtuple('Outputs', [\n      'window_column',\n      'window_stride_length',\n      'window_max_count',\n  ])(\n      result.get('window_column', ''),\n      int(result.get('window_stride_length', 0)),\n      int(result.get('window_max_count', 0)),\n  )\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-query-with-retry": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "query_with_retry"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef query_with_retry(\n    project: str,\n    location: str,\n    query: str,\n    query_parameters: list,  # pylint: disable=g-bare-generic\n    job_configuration_query: dict,  # pylint: disable=g-bare-generic\n    max_retry_count: int = 5,\n    retry_wait_seconds: int = 10,  # Waits up to 4 minutes before 5th retry.\n    destination_uri: str = '',\n) -> str:\n  \"\"\"Runs a query and retries on failure.\n\n  Args:\n    project: The GCP project.\n    location: The GCP region.\n    query: The query to run.\n    query_parameters: A list of query parameters.\n    job_configuration_query: Additional query job configurations.\n    max_retry_count: Maximum number of times to retry the query.\n    retry_wait_seconds: Approximate initial number of seconds to wait before\n      making another query attempt with exponential backoff.\n    destination_uri: Optional BigQuery URI to output if the query succeeds.\n\n  Returns:\n    The given destination URI.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import logging\n  import random\n  import time\n\n  from google.api_core import exceptions\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  job_configuration_query['queryParameters'] = query_parameters\n  job_config = bigquery.QueryJobConfig.from_api_repr(\n      {'query': job_configuration_query})\n  retry_count = 0\n  while True:\n    try:\n      client.query(query, job_config=job_config).result()\n      break\n    except exceptions.Forbidden as e:\n      if retry_count >= max_retry_count:\n        logging.info('Maximum retries reached.')\n        raise\n      wait_time = (\n          retry_wait_seconds * (2 ** retry_count) * random.uniform(1, 1.5))\n      logging.info(\n          'Query failed with %s. Retrying after %d seconds.', e, wait_time)\n      time.sleep(wait_time)\n      retry_count += 1\n  return destination_uri\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-query-with-retry-2": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "query_with_retry"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef query_with_retry(\n    project: str,\n    location: str,\n    query: str,\n    query_parameters: list,  # pylint: disable=g-bare-generic\n    job_configuration_query: dict,  # pylint: disable=g-bare-generic\n    max_retry_count: int = 5,\n    retry_wait_seconds: int = 10,  # Waits up to 4 minutes before 5th retry.\n    destination_uri: str = '',\n) -> str:\n  \"\"\"Runs a query and retries on failure.\n\n  Args:\n    project: The GCP project.\n    location: The GCP region.\n    query: The query to run.\n    query_parameters: A list of query parameters.\n    job_configuration_query: Additional query job configurations.\n    max_retry_count: Maximum number of times to retry the query.\n    retry_wait_seconds: Approximate initial number of seconds to wait before\n      making another query attempt with exponential backoff.\n    destination_uri: Optional BigQuery URI to output if the query succeeds.\n\n  Returns:\n    The given destination URI.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import logging\n  import random\n  import time\n\n  from google.api_core import exceptions\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  job_configuration_query['queryParameters'] = query_parameters\n  job_config = bigquery.QueryJobConfig.from_api_repr(\n      {'query': job_configuration_query})\n  retry_count = 0\n  while True:\n    try:\n      client.query(query, job_config=job_config).result()\n      break\n    except exceptions.Forbidden as e:\n      if retry_count >= max_retry_count:\n        logging.info('Maximum retries reached.')\n        raise\n      wait_time = (\n          retry_wait_seconds * (2 ** retry_count) * random.uniform(1, 1.5))\n      logging.info(\n          'Query failed with %s. Retrying after %d seconds.', e, wait_time)\n      time.sleep(wait_time)\n      retry_count += 1\n  return destination_uri\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-query-with-retry-3": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "query_with_retry"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'google-cloud-bigquery==2.24.1' 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef query_with_retry(\n    project: str,\n    location: str,\n    query: str,\n    query_parameters: list,  # pylint: disable=g-bare-generic\n    job_configuration_query: dict,  # pylint: disable=g-bare-generic\n    max_retry_count: int = 5,\n    retry_wait_seconds: int = 10,  # Waits up to 4 minutes before 5th retry.\n    destination_uri: str = '',\n) -> str:\n  \"\"\"Runs a query and retries on failure.\n\n  Args:\n    project: The GCP project.\n    location: The GCP region.\n    query: The query to run.\n    query_parameters: A list of query parameters.\n    job_configuration_query: Additional query job configurations.\n    max_retry_count: Maximum number of times to retry the query.\n    retry_wait_seconds: Approximate initial number of seconds to wait before\n      making another query attempt with exponential backoff.\n    destination_uri: Optional BigQuery URI to output if the query succeeds.\n\n  Returns:\n    The given destination URI.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import logging\n  import random\n  import time\n\n  from google.api_core import exceptions\n  from google.cloud import bigquery\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  client = bigquery.Client(project=project, location=location)\n  job_configuration_query['queryParameters'] = query_parameters\n  job_config = bigquery.QueryJobConfig.from_api_repr(\n      {'query': job_configuration_query})\n  retry_count = 0\n  while True:\n    try:\n      client.query(query, job_config=job_config).result()\n      break\n    except exceptions.Forbidden as e:\n      if retry_count >= max_retry_count:\n        logging.info('Maximum retries reached.')\n        raise\n      wait_time = (\n          retry_wait_seconds * (2 ** retry_count) * random.uniform(1, 1.5))\n      logging.info(\n          'Query failed with %s. Retrying after %d seconds.', e, wait_time)\n      time.sleep(wait_time)\n      retry_count += 1\n  return destination_uri\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-table-to-uri": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "table_to_uri"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef table_to_uri(\n    table: dsl.Input[dsl.Artifact],\n) -> NamedTuple('Outputs', [\n    ('project_id', str),\n    ('dataset_id', str),\n    ('table_id', str),\n    ('uri', str),\n]):\n  \"\"\"Converts a google.BQTable to a URI.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import collections\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  outputs = [\n      table.metadata['projectId'],\n      table.metadata['datasetId'],\n      table.metadata['tableId'],\n  ]\n  outputs.append('.'.join(outputs))\n  return collections.namedtuple(\n      'Outputs',\n      ['project_id', 'dataset_id', 'table_id', 'uri'],\n  )(*outputs)\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-table-to-uri-2": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "table_to_uri"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef table_to_uri(\n    table: dsl.Input[dsl.Artifact],\n) -> NamedTuple('Outputs', [\n    ('project_id', str),\n    ('dataset_id', str),\n    ('table_id', str),\n    ('uri', str),\n]):\n  \"\"\"Converts a google.BQTable to a URI.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import collections\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  outputs = [\n      table.metadata['projectId'],\n      table.metadata['datasetId'],\n      table.metadata['tableId'],\n  ]\n  outputs.append('.'.join(outputs))\n  return collections.namedtuple(\n      'Outputs',\n      ['project_id', 'dataset_id', 'table_id', 'uri'],\n  )(*outputs)\n\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-validate-inputs": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "validate_inputs"
            ],
            "command": [
              "sh",
              "-c",
              "\nif ! [ -x \"$(command -v pip)\" ]; then\n    python3 -m ensurepip || python3 -m ensurepip --user || apt-get install python3-pip\nfi\n\nPIP_DISABLE_PIP_VERSION_CHECK=1 python3 -m pip install --quiet     --no-warn-script-location 'kfp==1.8.14' && \"$0\" \"$@\"\n",
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef validate_inputs(\n    time_column: Optional[str] = None,\n    time_series_identifier_column: Optional[str] = None,\n    target_column: Optional[str] = None,\n    data_source_bigquery_table_path: Optional[str] = None,\n    training_fraction: Optional[float] = None,\n    validation_fraction: Optional[float] = None,\n    test_fraction: Optional[float] = None,\n    predefined_split_key: Optional[str] = None,\n    timestamp_split_key: Optional[str] = None,\n    data_source_csv_filenames: Optional[str] = None,\n    source_model_uri: Optional[str] = None,\n    bigquery_destination_uri: Optional[str] = None,\n    window_column: Optional[str] = None,\n    window_stride_length: Optional[int] = None,\n    window_max_count: Optional[int] = None,\n    optimization_objective: Optional[str] = None,\n    data_granularity_unit: Optional[str] = None,\n) -> None:\n  \"\"\"Checks training pipeline input parameters are valid.\"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import re\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n\n  project_pattern = r'([a-z0-9.-]+:)?[a-z][a-z0-9-_]{4,28}[a-z0-9]'\n  dataset_pattern = r'.[a-zA-Z0-9_]+'\n  table_pattern = r'.[^\\.\\:`]+'\n\n  # Validate BigQuery column and dataset names.\n  bigquery_column_parameters = [\n      time_column,\n      time_series_identifier_column,\n      target_column,\n  ]\n  column_pattern = re.compile(r'[a-zA-Z_][a-zA-Z0-9_]{1,300}')\n  for column in bigquery_column_parameters:\n    if column and not column_pattern.fullmatch(column):\n      raise ValueError(f'Invalid column name: {column}.')\n  dataset_uri_pattern = re.compile(project_pattern + dataset_pattern)\n  if (bigquery_destination_uri and\n      bigquery_destination_uri != '-' and\n      not dataset_uri_pattern.fullmatch(bigquery_destination_uri)):\n    raise ValueError(\n        f'Invalid BigQuery dataset URI: {bigquery_destination_uri}.')\n  table_uri_pattern = re.compile(project_pattern + dataset_pattern +\n                                 table_pattern)\n  if (source_model_uri and not table_uri_pattern.fullmatch(source_model_uri)):\n    raise ValueError(f'Invalid BigQuery table URI: {source_model_uri}.')\n\n  # Validate data source.\n  data_source_count = sum([bool(source) for source in [\n      data_source_bigquery_table_path, data_source_csv_filenames]])\n  if data_source_count > 1:\n    raise ValueError(f'Expected 1 data source, found {data_source_count}.')\n  if (data_source_bigquery_table_path\n      and not table_uri_pattern.fullmatch(data_source_bigquery_table_path)):\n    raise ValueError(\n        f'Invalid BigQuery table URI: {data_source_bigquery_table_path}.')\n  gcs_path_pattern = re.compile(r'gs:\\/\\/(.+)\\/([^\\/]+)')\n  if data_source_csv_filenames:\n    csv_list = [filename.strip()\n                for filename in data_source_csv_filenames.split(',')]\n    for gcs_path in csv_list:\n      if not gcs_path_pattern.fullmatch(gcs_path):\n        raise ValueError(f'Invalid path to CSV stored in GCS: {gcs_path}.')\n\n  # Validate split spec.\n  fraction_splits = [\n      training_fraction,\n      validation_fraction,\n      test_fraction,\n  ]\n  split_count = sum([\n      bool(source)\n      for source in [predefined_split_key,\n                     any(fraction_splits)]\n  ])\n  if split_count > 1:\n    raise ValueError(f'Expected 1 split type, found {split_count}.')\n  if (predefined_split_key and\n      not column_pattern.fullmatch(predefined_split_key)):\n    raise ValueError(f'Invalid column name: {predefined_split_key}.')\n  if any(fraction_splits):\n    if not all(fraction_splits):\n      raise ValueError(\n          f'All fractions must be non-zero. Got: {fraction_splits}.')\n    if sum(fraction_splits) != 1:\n      raise ValueError(\n          f'Fraction splits must sum to 1. Got: {sum(fraction_splits)}.')\n  if (timestamp_split_key and\n      not column_pattern.fullmatch(timestamp_split_key)):\n    raise ValueError(f'Invalid column name: {timestamp_split_key}.')\n  if timestamp_split_key and not all(fraction_splits):\n    raise ValueError('All fractions must be non-zero for timestamp split.')\n\n  # Validate window config.\n  window_configs = [window_column, window_stride_length, window_max_count]\n  window_config_count = sum([bool(config) for config in window_configs])\n  if window_config_count > 1:\n    raise ValueError(f'Expected 1 window config, found {window_config_count}.')\n  if window_column and not column_pattern.fullmatch(window_column):\n    raise ValueError(f'Invalid column name: {window_column}.')\n  if window_stride_length and (window_stride_length < 1 or\n                               window_stride_length > 1000):\n    raise ValueError('Stride must be between 1 and 1000. Got: '\n                     f'{window_stride_length}.')\n  if window_max_count and (window_max_count < 1000 or\n                           window_max_count > int(1e8)):\n    raise ValueError('Max count must be between 1000 and 100000000. Got: '\n                     f'{window_max_count}.')\n\n  # Validate eval metric.\n  valid_optimization_objectives = ['rmse', 'mae', 'rmsle']\n  if optimization_objective:\n    if optimization_objective not in valid_optimization_objectives:\n      raise ValueError(\n          'Optimization objective should be one of the following: '\n          f'{valid_optimization_objectives}, got: {optimization_objective}.')\n\n  # Validate data granularity unit.\n  valid_data_granularity_units = [\n      'minute', 'hour', 'day', 'week', 'month', 'year']\n  if data_granularity_unit:\n    if data_granularity_unit not in valid_data_granularity_units:\n      raise ValueError(\n          'Granularity unit should be one of the following: '\n          f'{valid_data_granularity_units}, got: {data_granularity_unit}.')\n\n"
            ],
            "image": "python:3.7-slim"
          }
        }
      }
    },
    "pipelineInfo": {
      "name": "automl-tabular-bqml-arima-train"
    },
    "root": {
      "dag": {
        "outputs": {
          "artifacts": {
            "create-metrics-artifact-evaluation_metrics": {
              "artifactSelectors": [
                {
                  "outputArtifactKey": "create-metrics-artifact-evaluation_metrics",
                  "producerSubtask": "exit-handler-1"
                }
              ]
            }
          }
        },
        "tasks": {
          "bigquery-delete-dataset-with-prefix": {
            "componentRef": {
              "name": "comp-bigquery-delete-dataset-with-prefix"
            },
            "dependentTasks": [
              "exit-handler-1"
            ],
            "inputs": {
              "parameters": {
                "dataset_prefix": {
                  "runtimeValue": {
                    "constantValue": {
                      "stringValue": "tmp_{{$.pipeline_job_uuid}}"
                    }
                  }
                },
                "delete_contents": {
                  "runtimeValue": {
                    "constantValue": {
                      "intValue": "1"
                    }
                  }
                },
                "project": {
                  "componentInputParameter": "project"
                }
              }
            },
            "taskInfo": {
              "name": "delete-tmp-dataset"
            },
            "triggerPolicy": {
              "strategy": "ALL_UPSTREAM_TASKS_COMPLETED"
            }
          },
          "exit-handler-1": {
            "componentRef": {
              "name": "comp-exit-handler-1"
            },
            "inputs": {
              "parameters": {
                "pipelineparam--bigquery_destination_uri": {
                  "componentInputParameter": "bigquery_destination_uri"
                },
                "pipelineparam--data_granularity_unit": {
                  "componentInputParameter": "data_granularity_unit"
                },
                "pipelineparam--data_source_bigquery_table_path": {
                  "componentInputParameter": "data_source_bigquery_table_path"
                },
                "pipelineparam--data_source_csv_filenames": {
                  "componentInputParameter": "data_source_csv_filenames"
                },
                "pipelineparam--forecast_horizon": {
                  "componentInputParameter": "forecast_horizon"
                },
                "pipelineparam--location": {
                  "componentInputParameter": "location"
                },
                "pipelineparam--max_order": {
                  "componentInputParameter": "max_order"
                },
                "pipelineparam--override_destination": {
                  "componentInputParameter": "override_destination"
                },
                "pipelineparam--predefined_split_key": {
                  "componentInputParameter": "predefined_split_key"
                },
                "pipelineparam--project": {
                  "componentInputParameter": "project"
                },
                "pipelineparam--root_dir": {
                  "componentInputParameter": "root_dir"
                },
                "pipelineparam--target_column": {
                  "componentInputParameter": "target_column"
                },
                "pipelineparam--test_fraction": {
                  "componentInputParameter": "test_fraction"
                },
                "pipelineparam--time_column": {
                  "componentInputParameter": "time_column"
                },
                "pipelineparam--time_series_identifier_column": {
                  "componentInputParameter": "time_series_identifier_column"
                },
                "pipelineparam--timestamp_split_key": {
                  "componentInputParameter": "timestamp_split_key"
                },
                "pipelineparam--training_fraction": {
                  "componentInputParameter": "training_fraction"
                },
                "pipelineparam--validation_fraction": {
                  "componentInputParameter": "validation_fraction"
                },
                "pipelineparam--window_column": {
                  "componentInputParameter": "window_column"
                },
                "pipelineparam--window_max_count": {
                  "componentInputParameter": "window_max_count"
                },
                "pipelineparam--window_stride_length": {
                  "componentInputParameter": "window_stride_length"
                }
              }
            },
            "taskInfo": {
              "name": "exit-handler-1"
            }
          }
        }
      },
      "inputDefinitions": {
        "parameters": {
          "bigquery_destination_uri": {
            "type": "STRING"
          },
          "data_granularity_unit": {
            "type": "STRING"
          },
          "data_source_bigquery_table_path": {
            "type": "STRING"
          },
          "data_source_csv_filenames": {
            "type": "STRING"
          },
          "forecast_horizon": {
            "type": "INT"
          },
          "location": {
            "type": "STRING"
          },
          "max_order": {
            "type": "INT"
          },
          "override_destination": {
            "type": "STRING"
          },
          "predefined_split_key": {
            "type": "STRING"
          },
          "project": {
            "type": "STRING"
          },
          "root_dir": {
            "type": "STRING"
          },
          "target_column": {
            "type": "STRING"
          },
          "test_fraction": {
            "type": "DOUBLE"
          },
          "time_column": {
            "type": "STRING"
          },
          "time_series_identifier_column": {
            "type": "STRING"
          },
          "timestamp_split_key": {
            "type": "STRING"
          },
          "training_fraction": {
            "type": "DOUBLE"
          },
          "validation_fraction": {
            "type": "DOUBLE"
          },
          "window_column": {
            "type": "STRING"
          },
          "window_max_count": {
            "type": "INT"
          },
          "window_stride_length": {
            "type": "INT"
          }
        }
      },
      "outputDefinitions": {
        "artifacts": {
          "create-metrics-artifact-evaluation_metrics": {
            "artifactType": {
              "schemaTitle": "system.Metrics",
              "schemaVersion": "0.0.1"
            }
          }
        }
      }
    },
    "schemaVersion": "2.0.0",
    "sdkVersion": "kfp-1.8.14"
  },
  "runtimeConfig": {
    "parameters": {
      "bigquery_destination_uri": {
        "stringValue": "-"
      },
      "data_source_bigquery_table_path": {
        "stringValue": "-"
      },
      "data_source_csv_filenames": {
        "stringValue": "-"
      },
      "max_order": {
        "intValue": "5"
      },
      "override_destination": {
        "stringValue": "False"
      },
      "predefined_split_key": {
        "stringValue": "-"
      },
      "test_fraction": {
        "doubleValue": -1.0
      },
      "timestamp_split_key": {
        "stringValue": "-"
      },
      "training_fraction": {
        "doubleValue": -1.0
      },
      "validation_fraction": {
        "doubleValue": -1.0
      },
      "window_column": {
        "stringValue": "-"
      },
      "window_max_count": {
        "intValue": "-1"
      },
      "window_stride_length": {
        "intValue": "-1"
      }
    }
  }
}