Azure数据工厂V2:SAP BW上的MDX查询Microsoft.DataTransfer.Common.Shared.HybridDeliveryException

时间:2018-07-19 10:44:41

标签: azure-data-factory azure-data-lake azure-data-factory-2 mdx-query sap-bw

我正在尝试使用SAP BW连接器中的MDX查询将数据从SAP BW系统提取到Azure数据湖。但是我在Azure中收到以下异常消息:

{
    "errorCode": "2200",
    "message": "Failure happened on 'Source' side. ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column '[Measures].[SomeMeasure]' contains an invalid value '4.000-2'. Cannot convert '4.000-2' to type 'Decimal'.,Source=Microsoft.DataTransfer.Common,''Type=System.InvalidCastException,Message=Specified cast is not valid.,Source=Microsoft.DataTransfer.Common,'",
    "failureType": "UserError",
    "target": "Copy1"
}

从错误中,我可以了解到Measurements中有些值实际上不是数字值。在SAP系统中更改或校正值不在我的范围内。  用于SAP BW的Data Factory V2中是否有任何选项,以便我可以为输入和/或输出定义度量的数据类型。还是在MDX查询中进行了微调,以便我可以正确地获取数据?

这是我的MDX查询:

SELECT 
{[Measures].[SomeMeasure]}  ON COLUMNS,
NON EMPTY
{ [0COMP_CODE].[LEVEL01].MEMBERS *
[0COSTELMNT].[LEVEL01].MEMBERS }
ON ROWS
FROM SomeQube
  WHERE {[0FISCPER].[K42015008]}

2 个答案:

答案 0 :(得分:0)

如果您可以跳过不正确的行,则可以将enableSkipIncompatibleRow设置为true。请参考this do c。

答案 1 :(得分:0)

您的过滤器不正确。 SAP 0FISCPER维度为YYYYMMM格式。您需要输入WHERE {[0FISCPER]。[2015008]}。我几乎可以肯定,您输入的“ K4”是您会计年度的变式,您不应该在此输入。像K4这样的对象称为复合信息对象(如果您将其设想为层次化父级/子级结构,则会计年度/期间属于该对象)。但是在这种特定情况下,您无需指定会计年度变式。只需移除K4。

我强烈建议您不要跳过“不正确的行”。我对您的指导是,无论何时发生异常,您都应始终使工作失败,并调查数据质量问题。永远不要将企业数据完整性置于危险之中。 SAP数据必须是100%准确,而不是99.9999%。