A equipe do BigQuery desenvolveu um recurso para tratar um arquivo das Planilhas Google como uma tabela em um banco de dados. Isso significa que é possível mesclar uma tabela do BigQuery com um bilhão de linhas e uma tabela de mapeamento de 100 linhas que você digita em uma planilha em uma única consulta.
Esse recurso permite configurar modelos de dados, criar um pipeline de dados para dados ad hoc ou comparar números atualizados com suas metas e projeções mais recentes.
Exemplo
Por exemplo, é possível modelar nomes de usuário no Looker que foram coletados usando um arquivo do Formulários Google.
Para coletar e modelar as informações no Looker, siga estas etapas:
- Usando o Formulários Google, colete os dados em uma planilha Google. Cada envio adiciona uma linha à planilha.
- Compartilhe a planilha com a conta de serviço que você usa para se conectar ao Looker ou conceda acesso aos usuários com um link (somente visualização).
- Confirme que as APIs Drive e Sheets API estão ativadas no seu projeto.
- Crie uma tabela na interface do BigQuery que acesse o conteúdo da planilha.
- No seu projeto do Looker, gere um modelo de dados que combine a tabela da planilha com outros dados do usuário que você já tenha coletado, como a localização dos usuários. Também é possível usar o SQL para normalizar os nomes que vêm do banco de dados. Os dados podem ser armazenados em cache no BigQuery para evitar uma carga pesada na planilha.
Confira a seguir um exemplo de como o LookML resultante pode ficar:
explore: names_sheet { persist_for: "60 seconds" join: names_facts { sql_on: ${names_sheet.normalized_name} = ${names_facts.normalized_name} ;; sql_where: ${names_facts.city} ;; relationship: one_to_one } view_name: names_sheet { derived_table: { persist_for: "2 minutes" sql: SELECT row_number() OVER() as id, name, UPPER(CASE WHEN REGEXP_MATCH(name, r'\,') THEN REGEXP_EXTRACT(name, r', (\w+)') ELSE REGEXP_EXTRACT(name, r'^(\w+)') END ) as normalized_name FROM namesheet.names ;; } dimension: id { type: number } dimension: name { order_by_field: id # keep the rows in the original order } dimension: normalized_name { } measure: count { type: count drill_fields: [id, name, names_facts.city] } measure: count_from_new_york_city { type: count filters: [names_facts.city: "New York City"] } measure: percentage_from_new_york_city { type: number sql: ${count_from_new_york_city}/${count} ;; value_format_name: percent_2 } measure: average_age_median { type: average sql: ${names_facts.age_median} ;; value_format: "0000" } } }
Com esse modelo, é possível criar Análises detalhadas com seus dados e Looks e painéis que mostram métricas sobre todos os nomes de usuário coletados do Formulários Google e inseridos no Planilhas Google, além de outras informações sobre cada usuário.