我通过在Databricks中挂载并创建一个表(“使用增量”)来连接到Azure gen 2数据湖中的增量表。然后我在Power BI中使用Databricks连接器连接到它。
首先,我不清楚数据湖和Databricks中的Spark表之间的关系。Spark表在每次查询时都会从数据湖(增量湖)检索最新的快照,这是正确的吗?是否也不可能通过对Spark表的操作来影响数据湖中的更改?
其次,减少Spark表中的列的最佳方法是什么(理想情况下,在将其读取到Power BI之前)?我尝试用指定的列子集创建Spark表,但得到了一个cannot change schema错误。相反,我可以创建另一个从第一个Spark表中选择的Spark表,但这似乎效率很低,并且(我认为)需要根据Power BI报告的刷新计划频繁地重新创建。我不知道是否有可能有一个引用另一个Spark delta表的Spark Delta表,这样当查询时,前者也总是最新的快照?
如您所知,我对此的理解是有限的(文档也是如此!)但是任何的指针都非常感谢。
提前感谢您的阅读!
发布于 2021-08-12 06:49:52
Spark中的表只是一个指定数据所在位置的元数据。因此,当您读取表时,Spark只需在元存储中查找数据存储位置、模式等信息,并访问这些数据。对ADLS所做的更改也将反映在该表中。也可以从工具中修改表,但这取决于处理数据的Spark集群有哪些访问权限-您可以在ADLS级别或使用table access control设置权限。
对于第二部分-您只需要在原始表上执行create a view操作,该视图将只选择有限的一组列-数据不会被复制,原始表中的最新更新将始终可用于查询。类似于:
CREATE OR REPLACE VIEW myview
AS SELECT col1, col2 FROM mytable
附注:如果你只是通过PowerBI或其他BI工具访问,你可以看看Databricks SQL (当它将在公共预览中出现时),它针对BI用例进行了大量优化。
https://stackoverflow.com/questions/68759323
复制相似问题