首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure数据库表不刷新

Azure数据库表不刷新
EN

Stack Overflow用户
提问于 2018-11-01 18:26:56
回答 1查看 1.4K关注 0票数 2

我有Azure集群设置,它从Azure数据湖中的文本文件中创建一个表。然后,我有另一个表,它是基于上面提到的第一个表的SQL语句。我更新了Data-Lake中的文本文件,并针对第一个表运行了一个刷新表,这样就可以从文本文件中看到更改的信息。然后,我对第二个表运行refresh表,当我查询这个表时,它并不反映文本文件中的更改。下面是我所拥有的笔记本中每个单元格的具体信息。

下面是创建指向文本文件的表的单元格

代码语言:javascript
复制
%sql
Create Table If Not Exists Raw.ReferenceTables
Using TEXT
Location "/mnt/adls/Raw/SAP/sd13.txt"

下面是创建指向上面Raw.ReferenceTables表的表的单元格

代码语言:javascript
复制
%sql
Create Table If Not Exists Raw.CostCenter
as
Select ltrim(rtrim(substring(value, 9, 6))) CostCenterId, 
  ltrim(rtrim(substring(value, 15, 30))) CostCenterDescription,
  ltrim(rtrim(SubString(value, 45, 1))) CostCenterCategory,
  ltrim(rtrim(SubString(value, 51, 5))) ProfitCenterID,
  ltrim(rtrim(SubString(value, 56, 15))) StdHierarchy,
  ltrim(rtrim(substring(value, 71, 4))) CompanyId
From Raw.ReferenceTables
Where substring(value,2 ,3) = '048'
  AND substring(value, 1 ,1) = 'D'
  AND substring(value, 5 ,4) <> 'SC-1'

所以现在,当我第一次查询Raw.CostCenter时,一切看起来都很好。

代码语言:javascript
复制
%sql
Select * From Raw.CostCenter

然后,我更新了DataLake中的txt文件,并针对Raw.ReferenceTables和Raw.CostCenter表运行刷新表。

代码语言:javascript
复制
%sql
Refresh Table Raw.ReferenceTables
%sql
Refresh Table Raw.CostCenter

当我查询Raw.ReferenceTables时,我可以看到更新的信息,但是当我查询Raw.CostCenter表时,我没有看到任何更改。我尝试只使用定义Raw.CostCenter的查询并运行它,它也会返回我所期望的结果。

如果我删除Raw.CostCenter表,然后再次创建它,那么它将显示正确的更新信息。

如果我错过了一些基本的东西,我会提前道歉,因为这是我第一次拥有用户数据库。这看起来很直截了当,但我只是不明白我在这里错过了什么。谢谢。

我按照下面的注释之一对Raw.CostCenter表进行了描述,这是结果

代码语言:javascript
复制
CostCenterId            string  null
CostCenterDescription   string  null
CostCenterCategory      string  null
ProfitCenterID          string  null
StdHierarchy            string  null
CompanyId               string  null

# Detailed Table Information        
Database            raw 
Table               costcenter  
Owner               root    
Created Time        Wed Oct 31 20:35:50 UTC 2018    
Last Access         Thu Jan 01 00:00:00 UTC 1970    
Created By          Spark 2.3.0 
Type                MANAGED 
Provider            parquet 
Table Properties    [transient_lastDdlTime=1541018150]  
Location            dbfs:/user/hive/warehouse/raw.db/costcenter 
Serde Library  org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe  
InputFormat    org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat    
OutputFormat     
 org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat 
Storage Properties  [serialization.format=1]               

但我看不出这对我如何更新表格有什么帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-11-01 19:26:47

在Databricks中找出数据的实际位置是很困难的。

通过使用created作为SELECT创建一个新的物理表来创建一个新的表并从一个现有的表中复制数据。运行该语句后,Raw.ReferenceTables和Raw.CostCenter之间不再有任何关系。

描述是你在这里的朋友。

如果您不想要单独的数据副本,可以创建一个视图

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53107232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档