在 PowerBI 中将 dBGeography 解析为纬度和经度

Parse dBGeography to latitude and longitude in PowerBI

有没有办法使用 Power Query 将 dBGeography 解析为纬度或经度?或者我能做到的唯一方法是在我的 dB 中增加 2 个列,这似乎不是一个很好的解决方案。

编辑:dB 值是这样的:0xE6100000010C17D9CEF753D347407593180456965EC0

您可以通过从 PowerQuery 中选择工具栏中的“转换数据”选项来执行此操作。

在下面的代码中,我创建了一个列的副本,然后:

  • 将“POINT (”替换为空(空白)
  • 将“)”替换为空(空白)
  • 拆分“ ”上的点 (space) 以获得两个字段。

第一个是纬度,第二个是经度。

let
    Source = Sql.Database("my.database.windows.net", "mydb"),
    dbo_FactTest = Source{[Schema="dbo",Item="FactTest"]}[Data],
    #"Removed Columns1" = Table.RemoveColumns(dbo_FactTest,{"MyTextData"}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Removed Columns1", "geo", "geo - Copy"),
    #"Renamed Columns" = Table.RenameColumns(#"Duplicated Column",{{"geo - Copy", "geo - original"}}),
    #"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","POINT (","",Replacer.ReplaceText,{"geo"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value",")","",Replacer.ReplaceText,{"geo"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value1", "geo", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"geo.1", "geo.2"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"geo.1", type number}, {"geo.2", type number}}),
    #"Renamed Columns1" = Table.RenameColumns(#"Changed Type",{{"geo.1", "Lat"}, {"geo.2", "Long"}})
in
    #"Renamed Columns1" 

从您的编辑看来,您使用的是 SQL 2008(或以旧格式存储数据的升级),其中点以十六进制格式保存。您需要做的是使用 SQL 在自定义 PowerBI 查询中提取纬度和经度。在 PowerBI 中,当 select 将您的数据库作为源时,单击“高级选项”,您可以放置​​自定义 select 语句,将十六进制解析为您可以使用的内容。请参阅下面的屏幕截图。

注意:“高级选项”仅在设置新数据源时可用,使用“最近的来源”选项不允许您捕获自己的查询。

我发现 this Whosebug answer 可以帮助您在 SQL select 语句中进行转换。

Call .STAsText() / .ToString() / .AsTextZM() on the value to see it in human readable form.