【问题标题】:Parse dBGeography to latitude and longitude in PowerBI在 PowerBI 中将 dBGeography 解析为纬度和经度
【发布时间】:2020-07-03 07:39:36
【问题描述】:

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

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

【问题讨论】:

    标签: powerbi dax powerquery powerbi-desktop powerbi-embedded


    【解决方案1】:

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

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

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

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

    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" 
    

    【讨论】:

    • 这似乎更像是 C# 获取它的方式。在 dB 中保存的值是:0xE6100000010C17D9CEF753D347407593180456965EC0 如何从中提取纬度和经度?
    • 我们使用这种类型的方法来存储地理 stackoverflow.com/questions/30322924/… 你能指出我的文档吗?
    【解决方案2】:

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

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

    我找到了this StackOverflow answer 来帮助您了解 SQL 选择语句中的转换。

    在值上调用 .STAsText() / .ToString() / .AsTextZM() 以查看它 人类可读的形式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多