【问题标题】:Varchar(MAX) field being truncated in SSAS cubeVarchar(MAX) 字段在 SSAS 多维数据集中被截断
【发布时间】:2019-10-23 19:28:09
【问题描述】:

在 SQL Server 2016 中,我有一个关系维度表,其字段设置为 varchar(MAX)。该字段中的某些数据超过 2k 个字符。当 SSAS 处理此数据时,该字段将被截断。它似乎在 2,050 处被截断。我已经在 XML 中搜索了整个多维数据集,看看是否可以找到 2050(或 2,050),但没有显示出来。

在数据源视图中,字段长度为 -1。我的理解是,这意味着无限。在维度定义中,字段为 WChar,DataSize 为 50,000。

我这辈子都找不到这个字段被截断的原因。我还能去哪里看?

更新:问题出在 Excel 上。当我们使用 PowerBI 查看此数据时,该字段不会被截断。所以SSAS中的数据是可以的。

【问题讨论】:

  • 听起来您可能已经读过这篇文章了? milambda.blogspot.com/2007/09/…
  • KeyColumn 或 NameColumn 或两者的 WChar 长度为 50000?我会明确定义一个带有长度的键和名称
  • 尝试删除服务器上的 SSAS 数据库,然后部署和重新处理。我只想 100% 确定部署确实成功部署了 WChar 长度。
  • @GregGalloway,是的,我确实读过那篇博文,谢谢。这个字段有一个 KeyColumn,它是一个整数 DataSize 0。有问题的字段有 WChar 50,000。
  • @GregGalloway,我刚刚部署了 SSAS 数据库的新副本并对其进行了处理。不幸的是,该字段仍然被截断。

标签: sql-server ssis ssas


【解决方案1】:

我在导入包含超过 255 个字符的字段的 excel 文件时遇到了这个问题。我使用 Python 解决了这个问题。

只需将 excel 导入 pandas 数据框中,然后计算每行每个字符串值的长度。

然后,按降序对数据框进行排序。这将使 SSIS 在扫描前 8 行以分配存储空间时为该字段分配最大空间:

df = pd.read_excel(f,sheet_name=0,skiprows = 1)
df = df.drop(df.columns[[0]], axis = 1)
df['length'] = df['Item Description'].str.len()
df.sort_values('length', ascending=False, inplace=True)
writer = ExcelWriter('Clean/Cleaned_'+f[5:])
df.to_excel(writer,sheet_name='Billing',index=False)
writer.save()

【讨论】:

  • @Jake 让我知道这是否有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多