数据库中的动态电子表格

BigQuery 团队开发了一项功能,可将 Google 表格视为数据库中的表。这意味着,您可以将 10 亿行的 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"
    }
  }
}

在此模型中,您可以使用自己的数据创建探索,并构建 Look信息中心,其中会显示从 Google 表单收集并录入 Google 表格的所有用户名的相关指标,以及每个用户的其他信息。