首页 > 解决方案 > Databricks 和 Power BI 中的增量表

问题描述

我通过安装在 Databricks 中并创建一个表(“使用 delta”)连接到 Azure gen 2 数据湖中的一个 delta 表。然后,我使用 Databricks 连接器在 Power BI 中连接到此。

首先,我不清楚 Databricks 中数据湖和 Spark 表之间的关系。Spark表每次自己查询时都从数据湖(delta湖)中检索最新的快照是否正确?是否也无法通过对 Spark 表的操作来影响数据湖中的更改?

其次,减少 Spark 表中列的最佳方法是什么(最好是在将其读入 Power BI 之前)?我尝试使用指定的列子集创建 Spark 表,但出现无法更改架构错误。相反,我可以创建另一个从第一个 Spark 表中选择的 Spark 表,但这似乎效率很低,并且(我认为)需要根据 Power BI 报告的刷新计划频繁地重新创建。我不知道是否有可能有一个 Spark delta 表引用另一个 Spark Delta 表,以便前者在查询时也始终是最新的快照?

如您所知,我对此的理解是有限的(文档也是如此!),但任何指针都非常感谢。

在此先感谢您的阅读!

标签: apache-sparkpowerbidatabricksazure-data-lakedelta-lake

解决方案


Spark 中的表只是指定数据所在位置的元数据。因此,当您读取表时,Spark 只是在 Metastore 中查找数据存储位置、架构等信息,然后访问该数据。对 ADLS 所做的更改也将反映在表格中。也可以通过工具修改表,但这取决于处理数据的 Spark 集群可用的访问权限 - 您可以在 ADLS 级别或使用表访问控制设置权限。

对于第二部分-您只需要在原始表上创建一个视图,该视图将仅选择有限的列集-不会复制数据,并且原始表中的最新更新将始终可用于查询。就像是:

CREATE OR REPLACE VIEW myview
    AS SELECT col1, col2 FROM mytable

PS 如果您仅通过 PowerBI 或其他 BI 工具进行访问,您可以查看针对 BI 用例进行了高度优化的 Databricks SQL(当它在公共预览版中时)。


推荐阅读