Error in merge statement
Getting the following error ApiError: unexpected MERGE expression. expected column reference but got *resolved_ast.GetStructFieldNode
here is code for reprodusing const {BigQuery} = require('@google-cloud/bigquery'); const orderSchemaForEmulator = [ {name: 'orderUuid', type: 'STRING', mode: 'REQUIRED'}, {name: 'userId', type: 'INT64', mode: 'REQUIRED'}, ];
const bigQueryConfig = { projectId: 'test', datasetId: 'testDataset', orderTableId: 'testTable', };
const bigquery = new BigQuery({projectId: bigQueryConfig.projectId, apiEndpoint: 'http://localhost:9050'}); const dataset = bigquery.dataset(bigQueryConfig.datasetId);
let query = MERGE ${bigQueryConfig.datasetId}.${bigQueryConfig.orderTableId} ; query += USING UNNEST([struct<; query += orderUuid STRING, userId INT64> ( + '260e3d0e-0a29-40a2-02ab-111111020a19', 10)]) TempTable ON testTable .orderUuid = TempTable.orderUuid + WHEN NOT MATCHED THEN INSERT (orderUuid,userId) VALUES (TempTable.orderUuid, TempTable.userId) WHEN MATCHED + THEN UPDATE SET testTable.orderUuid = TempTable.orderUuid, testTable .userId = TempTable.userId;
/** *
@return {Promise} */ async function test() { try { await dataset.table(bigQueryConfig.orderTableId).delete(); } catch (error) { console.log(Error: ${error.message}); } await dataset.createTable(bigQueryConfig.orderTableId, {schema: orderSchemaForEmulator}); await dataset.query(query); } test(); node version - 16 emulator version is 0.2.10
Hi @goccy , any update on this?
It would be nice if you could add appropriate indent using code block etc. to make it easier to see. I'll take a look later
Thanks @goccy
Hi @goccy , sorry for pushing :). Is there any update
Hi @goccy any update?