数据库中的实时电子表格

BigQuery 团队开发了将 Google 表格当作数据库中的表处理的功能。也就是说,您可以将包含十亿行数据的 BigQuery 表与通过单次查询输入到电子表格中的 100 行映射表进行联接。

借助此功能,您可以配置数据模型、为临时数据创建数据流水线,或将最新数据与最新的目标和预测进行比较。

示例

例如,您可能希望在 Looker 中对使用 Google 表单收集的用户名进行建模。

如需在 Looker 中收集信息并对其进行建模,您需要执行以下步骤:

  1. 使用 Google 表单,将数据收集到 Google 表格中。每次提交都会在工作表中添加一行。
  2. 与您用于连接到 Looker 的服务账号共享电子表格,或通过链接向用户授予访问权限(仅限查看)。
  3. 确保已为您的项目启用 Drive API 和 Sheets API
  4. BigQuery 界面创建一个表,用于从电子表格中获取其内容。
  5. 在您的 Looker 项目中,生成一个数据模型,以将电子表格表格与您可能已收集的其他用户数据(例如用户的位置。您还可以使用 SQL 对来自数据库的名称进行标准化。您可以在 BigQuery 中缓存数据,以避免电子表格的负载过重。

以下是生成的 LookML 的示例:

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"
    }
  }
}

借助此模型,您可以使用数据创建探索,并构建数据分析信息中心,以显示您从 Google 表单中收集并输入到 Google 表格中的所有用户名的相关指标,以及每个用户的其他信息。