A equipe do BigQuery desenvolveu um recurso para tratar uma Planilha Google como uma tabela em um banco de dados. Isso significa que é possível mesclar uma tabela do BigQuery com bilhões de linhas e uma tabela de mapeamento de cem linhas que você digita em uma planilha em uma única consulta.
Esse recurso permite configurar modelos de dados, criar um pipeline para dados ad hoc ou comparar números atualizados com suas metas e projeções mais recentes.
Exemplo
Por exemplo, você pode modelar nomes de usuário no Looker que foram coletados usando um formulário do Google.
Para coletar e modelar as informações no Looker, siga estas etapas:
- Usando o app 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 usada para se conectar ao Looker ou conceda acesso aos usuários com um link (somente leitura).
- Verifique se a API Drive e a API Sheets estão ativadas no seu projeto.
- Crie uma tabela na interface do BigQuery que extrai o conteúdo da planilha.
- No seu projeto do Looker, gere um modelo de dados que una a tabela da planilha a outros dados de usuários que você já coletou, como locais. 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 sobrecarga na planilha.
Confira a seguir um exemplo do LookML resultante:
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 criar visualizações e painéis que mostram métricas sobre todos os nomes de usuário que você coletou nos Formulários Google e inseriu nas Planilhas Google, além de outras informações sobre cada usuário.