Устранение ошибки дубликатов в средстве разработки Visual Studio для табличных и SQL сервисов - PullRequest
0 голосов
/ 31 января 2020

У меня есть вопрос о моем М-коде. В настоящее время я работаю в Visual Studio и «Редактирование выражений» через VSDT. У меня проблема в том, что я пытаюсь создать связь между одной таблицей измерений и другой таблицей фактов, используя первичный ключ. Первичный ключ в таблице Dim имеет уникальные значения, или это так. Я удалил пустые и пустые поля в столбце первичного ключа. Я начал с создания PK, объединив три столбца, общих для двух таблиц. Далее я удалил дубликаты и запустил эту команду в редакторе PQ. Я озадачен тем, почему, когда я соединяю две таблицы, я получаю сообщение об ошибке, в котором говорится, что моя таблица Dim не имеет уникальных значений. Больше разочаровывает, когда я сортирую данные по возрастанию и убыванию, и я не нахожу пробелов, где когда-то был пробел. Я озадачен тем, как решить эту проблему. Я пробовал 16 разных способов до воскресенья - даже перемещая некоторые шаги запроса. Безрезультатно ...

Сгенерирована ошибка:

Ошибка: не удалось сохранить изменения на сервере. Столбец Style_List_PK в таблице dStyles содержит пустые значения, и это недопустимо для столбцов на одной стороне отношения один-ко-многим или для столбцов, которые используются в качестве первичного ключа таблицы.

Код:

let
    Source = #"SQL/sbsqld59;PJ",
    dbo_Style_List = Source{[Schema="dbo",Item="Style_List"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(dbo_Style_List,{{"Brand", type text}, {"Style", type text}, {"Style Description", type text}, {"Sizes", type any}, {"Style Name", type text}, {"General Category", type text}, {"Style Category", type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Sizes", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Sizes.1", "Sizes.2", "Sizes.3", "Sizes.4", "Sizes.5", "Sizes.6", "Sizes.7", "Sizes.8", "Sizes.9"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Sizes.1", type text}, {"Sizes.2", type text}, {"Sizes.3", type text}, {"Sizes.4", type text}, {"Sizes.5", type text}, {"Sizes.6", type text}, {"Sizes.7", type text}, {"Sizes.8", type text}, {"Sizes.9", type text}}),
    #"Replaced Errors" = Table.ReplaceErrorValues(#"Changed Type1", {{"Sizes.1", "NULL"}, {"Sizes.2", "NULL"}, {"Sizes.3", "NULL"}, {"Sizes.4", "NULL"}, {"Sizes.5", "NULL"}, {"Sizes.6", "NULL"}, {"Sizes.7", "NULL"}, {"Sizes.8", "NULL"}, {"Sizes.9", "NULL"}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Replaced Errors", {"Brand", "Style", "Style Description", "Style Name", "General Category", "Style Category"}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Value", "Size"}}),
    #"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","","NULL",Replacer.ReplaceValue,{"Brand", "Style", "Style Description", "Style Name", "General Category", "Style Category", "Size"}),
    #"Uppercased Text" = Table.TransformColumns(#"Replaced Value",{{"Style", Text.Upper, type text}, {"Brand", Text.Upper, type text}, {"Size", Text.Upper, type text}}),
    #"Added Custom" = Table.AddColumn(#"Uppercased Text", "Style_List_PK", each Text.Combine({[Brand],[Style],[Size]})),
    #"Changed Type2" = Table.TransformColumnTypes(#"Added Custom",{{"Style_List_PK", type text}}),
    #"Trimmed Text" = Table.TransformColumns(#"Changed Type2",{{"Style_List_PK", Text.Trim, type text}}),
    #"Removed Duplicates" = Table.Distinct(#"Trimmed Text", {"Style_List_PK"}),
    #"Filtered Rows" = Table.SelectRows(#"Removed Duplicates", each [Style_List_PK] <> null and [Style_List_PK] <> "" and [Style_List_PK] <> " " and [Style_List_PK] <> "  ")
in
    #"Filtered Rows"
...