1

Considérons la requête BQ suivante:BigQuery API Node.js startQuery ne pas injecter des données dans destinationTable

const sourceQuery = '#standardSQL SELECT station_id, time FROM bryans_bike_analysis_data.2016_status_data ' + 
        'WHERE SAFE_CAST(bikes_available as INT64)=0 AND SAFE_CAST(docks_available AS INT64)=0' + 
        'GROUP BY station_id, time'; 

et examiner le code suivant (placé à l'intérieur d'une fonction Google Cloud - supprimé quelques trucs garder trop bref):

bqSource.startQuery({ 
    destination: bqDest.dataset(destDataset).table(destTable), 
    query: sourceQuery 
}, function(err, job) { 

    if (!err) { 
     console.log("Succesfully initialized query"); 

     job.getQueryResults(function(err, rows, apiResponse) { 

      if (!err) { 
       console.log("Successfully completed inner"); 
       console.log(apiResponse); 
      } 
      else { 
       console.log(err); 
       console.log(apiResponse); 
       res.status(500).end(); 
      } 

     }); 
    } 
    else { 
     console.log(err); 
     res.status(500).end(); 
    } 
}); 

la documentation me porte à croire que la requête doit exécuter, les résultats doivent être placés dans la table (dans un projet distinct) tel que spécifié selon la propriété de destination. Cependant, ceci est l'erreur qui est retourné:

errors: 
[ { domain: 'global', 
    reason: 'invalidQuery', 
    message: '1.195 - 1.195: No query found.', 
    locationType: 'other', 
    location: 'query' } ], 
    response: undefined, 
    message: '1.195 - 1.195: No query found.' } 

Quand je regarde les journaux, il ressemble à un appel d'insertion est faite à mon appel BQ projet de destination, il est en fait le getqueryresults dans mon projet source qui est aller chercher l'erreur. A l'intérieur de l'erreur dans mon projet source les journaux lus:

jobGetQueryResultsResponse: { 
job: { 
jobConfiguration: { 
    query: { 
    createDisposition: "CREATE_IF_NEEDED"   
    defaultDataset: { 
    } 
    destinationTable: { 
    datasetId: "destination_bq_cp_test"   
    projectId: "armalavage-test"   
    tableId: "bikes_available"   
    } 
    query: "#standardSQL SELECT station_id, time FROM bryans_bike_analysis_data.2016_status_data WHERE SAFE_CAST(bikes_available as INT64)=0 AND SAFE_CAST(docks_available AS INT64)=0GROUP BY station_id, time"   
    writeDisposition: "WRITE_EMPTY"   
    } 
} 

Je suppose que l'ensemble de données de destination a été définie dans la requête elle-même. Pourquoi n'est-ce pas résolu?

Répondre

1

Le problème avec votre chaîne de requête est qu'il est juste une ligne a commencé aveC# qui est traité comme un commentaire - ainsi le message d'erreur - No query found

+0

C'est ce que je reçois pour copier la requête directement à partir du BQ UI: /. Je vous remercie. La requête correcte et reformatée est: 'const sourceQuery = '#standardSQL \ n SELECT station_id, heure FROM bryans_bike_analysis_data.2 ...' –

+0

exactement! content que ça a aidé :) –

+1

btw, vous pouvez essayer d'utiliser backquote autour de la requête comme vous le verriez dans l'interface utilisateur. c'est l'analogue de guillemets pour littéral de chaîne –