Интеграция диалога с BigQuery - Передача целочисленных параметров в BQ - PullRequest
0 голосов
/ 02 марта 2019

Я создаю чат-бота, который извлекает данные из BigQuery, но у меня возникают проблемы с типами данных в Dialogflow:

Параметры Dialogflow: Rating (@ sys.number-int), Country (строка)), Department (String)

Когда я выполняю следующий код, кажется, что bigquery получает Rating в виде строки (Country и Department, которые являются строками, работают нормально в BigQuery), поэтому я попыталсяАКТЕР, но не везение.

Может ли кто-нибудь помочь мне передать переменные INT64 в BigQuery из Dialogflow?

 function buyAgainPredictor(agent) {
    const OPTIONS = {
                query: 'WITH pred_table AS (SELECT CAST(`request.body.queryResult.outputContexts[0].parameters.Rating´ AS INT64) as Rating, "request.body.queryResult.outputContexts[0].parameters.Department" as Department,  "request.body.queryResult.outputContexts[0].parameters.Country" as Country)' +
                'SELECT cast(predicted_label as INT64) as predicted_label ' +
                'FROM ML.PREDICT(MODEL Customer_feedback.recommend_model,  TABLE pred_table)',
                timeoutMs: 10000,
                useLegacySql: false,
                queryParameters: {}

Определение параметра DialogFlow

1 Ответ

0 голосов
/ 09 августа 2019

Вы не заменяете переменные в строке.Попробуйте это в query:

`WITH pred_table AS (
  SELECT ${request.body.queryResult.outputContexts[0].parameters.Rating} as Rating,
     "${request.body.queryResult.outputContexts[0].parameters.Department}" as Department,
     "${request.body.queryResult.outputContexts[0].parameters.Country}" as Country)

SELECT cast(predicted_label as INT64) as predicted_label 
     FROM ML.PREDICT(MODEL Customer_feedback.recommend_model, TABLE pred_table)`

Обычно, вы не хотите использовать пользовательский ввод в ваших SQL-запросах ( SQL-инъекция ), проверьте документацию по параметризованному параметру запросы .Принимая это во внимание, вы можете попробовать это:

const OPTIONS = {
    query: `WITH pred_table AS (
                SELECT @rating as Rating,
                       @department as Department,  
                       @country as Country)

            SELECT cast(predicted_label as INT64) as predicted_label
                 FROM ML.PREDICT(MODEL Customer_feedback.recommend_model, TABLE pred_table)`,

    timeoutMs: 10000,
    useLegacySql: false,
    queryParameters: {
        rating: parameters.Rating,
        department: parameters.Department,
        country: parameters.Country
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...