Powerbi 数据源。错误:MicrosoftSQL:一个关于数据源的会话
nvarchar数据转换问题/nvarchar类型的数据转换问题 数据源。错误:MicrosoftSQL:一个关于数据的会话,用于数据的日期时间结果。 细节: DataSourceKind=SQL DataSourcePath=rabbotdb-production.cld5znexge33.sa-east-1.rds.amazonaws.com;拉博特 Message=一个关于日期时间的会话,用于在间隔时间内对数据进行处理。 数字=242 等级=16 我尝试使用这个代码集DATEFORMAT ymd;我在前面的一个问题中发现,另一个人也有同样的问题,尽管它不起作用。 因为即使它可以工作,我也不知道在我的代码中插入到哪里 欧盟的目标是解决所有问题,而不是解决当地问题 设置日期格式ymdPowerbi 数据源。错误:MicrosoftSQL:一个关于数据源的会话,powerbi,Powerbi,nvarchar数据转换问题/nvarchar类型的数据转换问题 数据源。错误:MicrosoftSQL:一个关于数据的会话,用于数据的日期时间结果。 细节: DataSourceKind=SQL DataSourcePath=rabbotdb-production.cld5znexge33.sa-east-1.rds.amazonaws.com;拉博特 Message=一个关于日期时间的会话,用于在间隔时间内对数据进行处理。 数字=242 等级=16 我尝试使用这个代码集DATEFORMAT
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。