Quero gerar alguns relatórios com base nos dados do BigTable. Para isso, eu queria criar uma consulta que obtenha os dados mais recentes da BigTable e os repasse para o relatório do estúdio de dados. Agora, o problema é que, quando crio uma conexão BigTable no BigQuery, não consigo executar nenhuma consulta, mesmo na tabela vazia. Crio o tipo para o BigQuery da seguinte maneira:
bq mk \
--external_table_definition=gs://somebucket/big-table-definition.json \
datareportingdataset.datareportingtable
e o comando é executado com sucesso. Minha big-table-definition.json
aparência é a seguinte:
{
"sourceFormat": "BIGTABLE",
"sourceUris": [
"https://googleapis.com/bigtable/projects/playground-2/instances/data-reporting/tables/data-reporting-table"
],
"bigtableOptions": {
"readRowkeyAsString": "true",
"columnFamilies" : [
{
"familyId": "cf1",
"onlyReadLatest": "true",
"columns": [
{
"qualifierString": "temp",
"type": "STRING"
},
{
//the rest of the columns
]
}
]
}
}
O erro ao fazer uma select *
consulta simples é semelhante ao seguinte:
Error while reading table: datareportingdataset.datareportingtable, error message: Error detected while parsing row starting at position: 2. Error: Data between close double quote (") and field separator.
Primeiro, suspeitava de alguns dados na BigTable, mas quando excluí tudo de lá, o erro ainda ocorre. Eu descobri que deve ser algo com o próprio arquivo json, como quando movo o "sourceFormats" algumas linhas, o erro altera a posição relatada. O que eu estou fazendo errado aqui?
Acho que encontrei o problema porque consegui reproduzi-lo. A mensagem de erro é confusa, mas, conforme documentado aqui :
Fiz alguns testes com o início rápido do Bigtable e funcionou bem para mim:
A única coisa que fiz de diferente foi usar um caminho local como em:
Alterando isso de volta para:
E eu recebi o mesmo erro:
fonte