Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 数据源。错误:MicrosoftSQL:一个关于数据源的会话_Powerbi - Fatal编程技术网

Powerbi 数据源。错误:MicrosoftSQL:一个关于数据源的会话

Powerbi 数据源。错误:MicrosoftSQL:一个关于数据源的会话,powerbi,Powerbi,nvarchar数据转换问题/nvarchar类型的数据转换问题 数据源。错误:MicrosoftSQL:一个关于数据的会话,用于数据的日期时间结果。 细节: DataSourceKind=SQL DataSourcePath=rabbotdb-production.cld5znexge33.sa-east-1.rds.amazonaws.com;拉博特 Message=一个关于日期时间的会话,用于在间隔时间内对数据进行处理。 数字=242 等级=16 我尝试使用这个代码集DATEFORMAT

nvarchar数据转换问题/nvarchar类型的数据转换问题

数据源。错误:MicrosoftSQL:一个关于数据的会话,用于数据的日期时间结果。 细节: DataSourceKind=SQL DataSourcePath=rabbotdb-production.cld5znexge33.sa-east-1.rds.amazonaws.com;拉博特 Message=一个关于日期时间的会话,用于在间隔时间内对数据进行处理。 数字=242 等级=16

我尝试使用这个代码集DATEFORMAT ymd;我在前面的一个问题中发现,另一个人也有同样的问题,尽管它不起作用。 因为即使它可以工作,我也不知道在我的代码中插入到哪里

欧盟的目标是解决所有问题,而不是解决当地问题

设置日期格式ymd

let
    Fonte = Sql.Database("serverx", "xx"),
    dbo_vw_PS = Fonte{[Schema="dbo",Item="dbo_vw_PS"]}[Data],
    #"Linhas Filtradas" = Table.SelectRows(ddbo_vw_PS, each [DataMovimentacao] > #datetime(2019, 6, 1, 0, 0, 0)),
    #"Linhas Classificadas" = Table.Sort(#"Linhas Filtradas",{{"DataMovimentacao", Order.Ascending}}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Linhas Classificadas",{{"Valor Total do Serviço (REV.)", Currency.Type}, {"Valor Total das Peças (REV.)", Currency.Type}}),
    #"Coluna Duplicada" = Table.DuplicateColumn(#"Tipo Alterado", "DataMovimentacao", "DataMovimentacao - Copiar"),
    #"Tipo Alterado1" = Table.TransformColumnTypes(#"Coluna Duplicada",{{"DataMovimentacao - Copiar", type date}}),
    #"Consultas Mescladas" = Table.NestedJoin(#"Tipo Alterado1", {"IdCarro"}, Carro, {"Id"}, "Carro", JoinKind.LeftOuter),
    #"Carro Expandido" = Table.ExpandTableColumn(#"Consultas Mescladas", "Carro", {"Marca"}, {"Carro.Marca"}),
    #"Erros Removidos" = Table.RemoveRowsWithErrors(#"Carro Expandido", {"Valor Total do Serviço (REV.)"}),
    #"Linhas Filtradas1" = Table.SelectRows(#"Erros Removidos", each [#"Valor Total do Serviço (REV.)"] < 2000),
    #"Coluna Duplicada1" = Table.DuplicateColumn(#"Linhas Filtradas1", "Modelo", "Modelo - Copiar"),
    #"Dividir Coluna por Delimitador" = Table.SplitColumn(#"Coluna Duplicada1", "Modelo - Copiar", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Modelo - Copiar.1", "Modelo - Copiar.2"}),
    #"Tipo Alterado2" = Table.TransformColumnTypes(#"Dividir Coluna por Delimitador",{{"Modelo - Copiar.1", type text}, {"Modelo - Copiar.2", type text}}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Tipo Alterado2",{{"Modelo - Copiar.1", "Marca"}}),
    #"Texto em Maiúscula" = Table.TransformColumns(#"Colunas Renomeadas",{{"Marca", Text.Upper, type text}})
in
    #"Texto em Maiúscula"
Power bi无法将类型nvarchar从sql server转换为日期时间类型/格式。 数据源。错误:MicrosoftSQL:一个关于数据的会话,用于数据的日期时间结果。 详情:

根据建议的解决方案进行编辑:

好的,我试过这一步,但没有成功

另外,我正在搜索,可能我们必须将数据类型设置为巴西格式,比如:Cast=Date.ToText[Date],dd/mm/yyyy。类似这样的情况,我认为错误就发生在power bi试图从SQL中获取美国日期mm/dd格式并且无法将其转换为巴西格式时,因为它甚至无法从SQL加载查询

但我已经签入了SQL,一切正常,SQL端没有问题,所以power bi无法从SQL数据库转换该日期


在验证过程中添加带有完整查询和周期性错误的步骤看起来错误是d/t将VARCHAR字段与datetime值进行直接比较

尝试在dbo_vw_PS和Linhas Filtradas之间添加一个新步骤,首先将字段[DataMovimentacao]强制转换为日期类型:

let
    Fonte = Sql.Database("serverx", "xx"),
    dbo_vw_PS = Fonte{[Schema="dbo",Item="dbo_vw_PS"]}[Data],
    CastToDate =
        Table.TransformColumnTypes(
            dbo_vw_PS,
            {{"DataMovimentacao", type date}}),
    #"Linhas Filtradas" =
        Table.SelectRows(
            CastToDate,
            each [DataMovimentacao] > #datetime(2019, 6, 1, 0, 0, 0)),
    ...
您正在引入一个新的步骤,变量CastToDate,并将Linhas Filtradas更改为引用该变量。查询的其余部分将保持不变

编辑:

好的,首先,您在共享的屏幕截图中看到的错误意味着您有一个无效的M查询。请发布更新后的完整查询

第二,原始错误表明您的SQL类型实际上是VARCHAR,而不是任何日期类型,因此我们不能使用任何日期。。。功能。我们不是在约会。我们正在处理文本。我们想把这篇文章定为一个日期

我们可以从带有datetime.FromText的文本字段中获取datetime值。一个具体的例子是DateTime.FromText22/10/2018 16:15:21,pt BR/=>DateTime 2018,10,22,16,15,21

我最初的希望是,只要按datetime进行转换就可以检测到格式,但在PQ中似乎不是这样

因此,我们可以如下更新我们的新步骤。我们将显式转换字符串,而不是类型转换。为了避免M语法问题,我将更新查询的全文放在下面

具体转换步骤:

    CastToDate =
        Table.TransformColumns(    // Note we're using Table.TransformColumns instead of Table.TransformColumnTypes
            dbo_vw_PS,
            {{"DataMovimentacao", each DateTime.FromText(_, "pt-BR"), DateTime.Type}}),
以及完整的查询

let
    Fonte = Sql.Database("serverx", "xx"),
    dbo_vw_PS = Fonte{[Schema="dbo",Item="dbo_vw_PS"]}[Data],
    CastToDate =
        Table.TransformColumns(    // Note we're using Table.TransformColumns instead of Table.TransformColumnTypes
            dbo_vw_PS,
            {{"DataMovimentacao", each DateTime.FromText(_, "pt-BR"), DateTime.Type}}),
    #"Linhas Filtradas" =
        Table.SelectRows(
            CastToDate,
            each [DataMovimentacao] > #datetime(2019, 6, 1, 0, 0, 0)),
    #"Linhas Classificadas" = Table.Sort(#"Linhas Filtradas",{{"DataMovimentacao", Order.Ascending}}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Linhas Classificadas",{{"Valor Total do Serviço (REV.)", Currency.Type}, {"Valor Total das Peças (REV.)", Currency.Type}}),
    #"Coluna Duplicada" = Table.DuplicateColumn(#"Tipo Alterado", "DataMovimentacao", "DataMovimentacao - Copiar"),
    #"Tipo Alterado1" = Table.TransformColumnTypes(#"Coluna Duplicada",{{"DataMovimentacao - Copiar", type date}}),
    #"Consultas Mescladas" = Table.NestedJoin(#"Tipo Alterado1", {"IdCarro"}, Carro, {"Id"}, "Carro", JoinKind.LeftOuter),
    #"Carro Expandido" = Table.ExpandTableColumn(#"Consultas Mescladas", "Carro", {"Marca"}, {"Carro.Marca"}),
    #"Erros Removidos" = Table.RemoveRowsWithErrors(#"Carro Expandido", {"Valor Total do Serviço (REV.)"}),
    #"Linhas Filtradas1" = Table.SelectRows(#"Erros Removidos", each [#"Valor Total do Serviço (REV.)"] < 2000),
    #"Coluna Duplicada1" = Table.DuplicateColumn(#"Linhas Filtradas1", "Modelo", "Modelo - Copiar"),
    #"Dividir Coluna por Delimitador" = Table.SplitColumn(#"Coluna Duplicada1", "Modelo - Copiar", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Modelo - Copiar.1", "Modelo - Copiar.2"}),
    #"Tipo Alterado2" = Table.TransformColumnTypes(#"Dividir Coluna por Delimitador",{{"Modelo - Copiar.1", type text}, {"Modelo - Copiar.2", type text}}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Tipo Alterado2",{{"Modelo - Copiar.1", "Marca"}}),
    #"Texto em Maiúscula" = Table.TransformColumns(#"Colunas Renomeadas",{{"Marca", Text.Upper, type text}})
in
    #"Texto em Maiúscula"

错误发生在哪里?您有一个步骤,Linhas Filtradas,它根据日期时间值进行过滤。之后还有一个步骤,Tipo Alterado,您可以将该列的副本转换为日期。以下哪项是抛出错误?您能否共享SQL中表声明中源表列和类型的架构?您能否提供一个具有相同错误的更简单的查询示例?有许多步骤与您的错误无关。最后,请确保用反勾号包装代码以对其进行格式化您是对的,谢谢您的评论,我的问题显示在第一行,可能在数据转换nvarchar:Linhas filteradas=Table中。请选择RowsServerx,each[DataMovimentacao]>datetime2019,6,1,0,0,0,抱歉弄乱了帖子,第一次尝试这个网站。不用担心,只是试着帮助你问问题,帮助别人回答。能否在source[DataMovimentacao]列中提供数据样本?它们是否都被格式化为日期,或者是否有看起来不带日期的文本?在我看来,使用字段[DataMovimentacao]好像它是一个日期而没有将其转换为日期是自找麻烦的。你能在Linhas Filtradas之前插入一个更改数据类型步骤,并将[DataMovimentacao]转换为datetime吗?@greggyb我不知道如何在这里粘贴图像,但不知道它们的格式都不是日期,只是葡萄牙语中的[DataMovimentacao]列数据是日期。我有文本:IdFluxo IdFluxoItem DataMovimentacao
5 27 06/03/2019 11:13:58 5 27 22/10/2018 16:15:21 5 27 01/11/2018 15:39:49我想这是美国日期到葡萄牙日期的转换。问题解决了,问题确实出在一个SQL帐户视图中,该视图链接在power bi中,它的英语和葡萄牙语日期时间不正确。在其中一个sql帐户中,表被正确加载,因此我们检查并转换为相同的日期时间并工作,这就是为什么我说在sql中是可以的,因为确实可以,但在与BI链接的帐户中不是。英雄联盟谢谢你们,很抱歉浪费你们的时间,整个问题都源于SQL。