загрузка данных в таблицу дат измерения

Что ж, у меня есть таблица дат измерения, в которой есть два атрибута «Месяц» и «Год», как написано в сценарии, а месяц (мойс) является моим первичным ключом. А у меня другой год с таким же месяцем как в исходном файле показывает. И что же мне делать? взять их все или я должен использовать отдельные?

Мой исходный файл Excel Plus. У меня есть данные (или дата) из таблицы продаж, которые мне нужно получить из пабов базы данных.

PS: я использую ssis (визуальная студия)

Это моя исходная дата

это моя исходная дата

Вот как я создаю свою таблицу дат измерения, потому что наш профессор сказал нам создать ее так (не нужно подробностей)

запрос

Я знаю, как импортировать данные из Excel, и разбиваю дату. У меня есть только от, когда я загружаю в таблицу измерений, я обнаружил проблему. Моя проблема в том, что у меня есть, например, 2 даты (только месяц и год) 05/1995 и 05/1995, и я хочу загрузить их в свою таблицу измерений, но я не могу использовать свой месяц в качестве первичного ключа. И первичный ключ должен быть уникальным


person Sirinà Strong    schedule 16.04.2017    source источник
comment
Это непонятно, какова ваша цель, какой отчет или анализ вы хотите построить? ваш вопрос зависит от вашей цели.   -  person Hadi    schedule 16.04.2017
comment
@hadi я хочу построить хранилище данных.   -  person Sirinà Strong    schedule 17.04.2017
comment
Вы должны показать, что вы пробовали. если вы не приложите никаких усилий, никто не поможет вам в stackoverflow сделать домашнее задание   -  person Hadi    schedule 17.04.2017


Ответы (1)


  • Вы должны добавить DataFlow Task, который содержит Excel Source -> Script Component -> 2x OLEDB Destination
  • В компоненте сценария вы должны добавить новый вывод Dim Date с двумя столбцами Month и Year и установить для свойства Synchronous Input значение none.

введите здесь описание изображения

  • Первый вывод будет содержать столбцы, содержащие другие данные, и он синхронен с входным буфером.
  • В сценарии вы должны создать список, в котором хранятся разные месяцы, и каждый раз, когда будет найден новый месяц, он будет генерировать вывод Dim Date.

ваш сценарий должен выглядеть так.

Dim lstDates As New System.Collections.Generic.List(Of String)

Public Overrides Sub Input0Buffer_ProcessInputRow(ByVal Row As Input0Buffer)  


        If Not Row.Date_IsNull Then

            Dim strMonth As String = Row.Date.ToString("MM/yyyy")

            If Not lstDates.Contains(strMonth) Then

                With DimDateBuffer
                    .AddRow()
                    .Month = strMonth
                    .Year = Right(strMonth, 4)
                End With

                lstDates.Add(strMonth)

            End If 

        End If 
End Sub 

Таким образом, у вас не будет дубликатов в таблице измерений. Кроме того, если этот пакет должен запускаться периодически, вы можете добавить Execute SQL Task, который получает все измерения из хранилища данных и загружает их в список, созданный в компоненте скрипта, с помощью переменной Object

  • Наконец, сопоставьте выходные столбцы DimDate с первым OLEDB destination, а столбцы первого вывода с другим пунктом назначения.
person Hadi    schedule 17.04.2017
comment
Нет, я не пытаюсь создать измерение даты, оно у меня уже есть. Я пытаюсь загрузить в него данные! - person Sirinà Strong; 17.04.2017
comment
Ваш вопрос неясен!! Пожалуйста, отредактируйте его и будьте более конкретными. также Укажите тип источника данных - person Hadi; 17.04.2017
comment
Также неверный способ создания измерения даты. - person Hadi; 17.04.2017
comment
@SirinàStrong Я не могу дать вам подробный ответ, если не проявлю никаких усилий, все, что я сделал, это предоставить вам полезные ссылки для достижения этой цели. - person Hadi; 17.04.2017
comment
@SirinàStrong, а также я буду рад помочь, когда вы начнете создавать этот пакет. мы все были там. удачи - person Hadi; 17.04.2017
comment
Я знаю, как импортировать данные из Excel, и я разделил дату. У меня есть только от, когда я загружаю в таблицу измерений, я обнаружил проблему. Моя проблема в том, что у меня есть, например, 2 даты (только месяц и год) 05/1995 и 05/1995, и я хочу загрузить их в свою таблицу измерений, но я не могу получить свой месяц в качестве первичного ключа. И первичный ключ должен быть уникальным!!! - person Sirinà Strong; 17.04.2017
comment
@SirinàStrong, теперь все в порядке. Дайте мне минутку, и я предоставлю вам решение. :) - person Hadi; 17.04.2017
comment
все в порядке, не торопитесь, извините, в последнем комментарии я имел в виду 05/1995 и 05/1996 - person Sirinà Strong; 17.04.2017
comment
@SirinàStrong, я отредактировал свой ответ. и обновил + проголосовал за ваш вопрос. удачи - person Hadi; 18.04.2017
comment
Окей попробую - person Sirinà Strong; 18.04.2017
comment
@SirinàStrong, я все еще жду. Если это сработало, вы должны принять или проголосовать за этот ответ. В противном случае дайте ответ - person Hadi; 25.04.2017
comment
@SirinàStrong, если это сработало, вам нужно принять это - person Hadi; 25.04.2017