Интересно, сможет ли кто-нибудь помочь мне, пожалуйста?
Я собрал нижеприведенный скрипт, который исправляет данные в моей таблице bigQuery:
function runQuery() {
var projectId = 'bigquery';
var datasetId = 'Test';
var date = '20181206';
var tableId = 'ga_sessions_'+date;
// Configuration
var configuration = {
"query": {
"useQueryCache": false,
"writeDisposition": "WRITE_TRUNCATE",
"createDisposition": "CREATE_IF_NEEDED",
"allowLargeResults": true,
"useLegacySql": false,
query: "SELECT * EXCEPT (hits),ARRAY( SELECT AS STRUCT * EXCEPT (page, appInfo, eventInfo ),(SELECT "+
"AS STRUCT page.* EXCEPT (pagePath, pagePathLevel1, pagePathLevel2, pagePathLevel3, pagePathLevel4), "+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePath,"+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel1, "+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel2,"+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel3, "+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel4, "+
"`bigquery.Test.ga_sessions_20181206`",
destinationTable: { projectId: projectId, datasetId: datasetId, tableId: tableId }
}
};
var job = {
"configuration": configuration
};
var jobResult = BigQuery.Jobs.insert(job, "bigquery");
Logger.log(jobResult);
}
Код работает,но теперь я хотел бы изменить эту строку:
"`bigquery.Test.ga_sessions_20181206`"
Так, чтобы конечному пользователю не приходилось вводить дату, она берется из 'var date'.
Я изменил код так:
function runQuery() {
var projectId = 'bigquery';
var datasetId = 'Test';
var date = '20181206';
var tableId = 'ga_sessions_'+date;
// Configuration
var configuration = {
"query": {
"useQueryCache": false,
"writeDisposition": "WRITE_TRUNCATE",
"createDisposition": "CREATE_IF_NEEDED",
"allowLargeResults": true,
"useLegacySql": false,
query: "SELECT * EXCEPT (hits),ARRAY( SELECT AS STRUCT * EXCEPT (page, appInfo, eventInfo ),(SELECT "+
"AS STRUCT page.* EXCEPT (pagePath, pagePathLevel1, pagePathLevel2, pagePathLevel3, pagePathLevel4), "+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePath,"+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel1, "+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel2,"+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel3, "+
"REGEXP_REPLACE(page.pagePath, r'([^\\?]+?)(\\?.+)','\\\\1') AS pagePathLevel4, "+
"`bigquery.Test.ga_sessions_*` "+
"WHERE "+
" _TABLE_SUFFIX = 'date' " ,
destinationTable: { projectId: projectId, datasetId: datasetId, tableId: tableId }
}
};
var job = {
"configuration": configuration
};
var jobResult = BigQuery.Jobs.insert(job, "bigquery");
Logger.log(jobResult);
}
Проблема, с которой я столкнулся сейчас, состоит в том, что вместо того, чтобы вносить изменения в данные, они полностью удаляются.
Может кто-нибудь взглянуть на это, пожалуйста, идайте мне знать, где я ошибся.
Большое спасибо и наилучшие пожелания
Крис