দক্ষতার সাথে বন্যপ্রাণে বিভিন্ন কীগুলির সাথে কী-মান জোড়ার সেটগুলি সঞ্চয় করে


9

আমি একটি অ্যাপ্লিকেশন উত্তরাধিকার সূত্রে পেয়েছি যা সাইটের সাথে বিভিন্ন ধরণের ক্রিয়াকলাপ সংযুক্ত করে। প্রায় 100 টি বিভিন্ন ক্রিয়াকলাপের ধরণ রয়েছে এবং প্রত্যেকের 3-10 ক্ষেত্রের সেট আলাদা হয়। তবে, সমস্ত ক্রিয়াকলাপে কমপক্ষে একটি তারিখের ক্ষেত্র রয়েছে (তারিখ, শুরুর তারিখ, শেষ তারিখ, নির্ধারিত সূচনার তারিখ, ইত্যাদি) এবং কোনও দায়িত্ববান ব্যক্তি ক্ষেত্র থাকতে পারে। অন্যান্য সমস্ত ক্ষেত্র ব্যাপকভাবে পরিবর্তিত হয় এবং একটি শুরু তারিখের ক্ষেত্রটি অগত্যা "শুরুর তারিখ" বলা হবে না।

প্রতিটি ক্রিয়াকলাপের জন্য একটি উপ-টাইপ টেবিল তৈরি করার ফলে 100 টি বিভিন্ন ধরণের টাইপযুক্ত স্কিমা তৈরি হবে, যা মোকাবেলা করতে খুব অনস্বীকার্য। এই সমস্যার বর্তমান সমাধান হ'ল কী-মান জোড়া হিসাবে ক্রিয়াকলাপের মানগুলি সংরক্ষণ করা। পয়েন্টটি পেরিয়ে যাওয়ার জন্য এটি বর্তমান সিস্টেমের একটি বৃহত সরলিকৃত স্কিমা।

এখানে চিত্র বর্ণনা লিখুন

প্রতিটি ক্রিয়াকলাপে একাধিক অ্যাক্টিভিটিফিল্ড থাকে; প্রতিটি সাইটে একাধিক ক্রিয়াকলাপ রয়েছে এবং সাইটঅ্যাক্টিভিটি ডেটা টেবিল প্রতিটি সাইটঅ্যাক্টিভিটির জন্য কেভিপিগুলি সঞ্চয় করে।

এটি (ওয়েব-ভিত্তিক) অ্যাপ্লিকেশনটিকে কোডের পক্ষে খুব সহজ করে তোলে কারণ আপনার সত্যিকারের যা যা করা দরকার তা হল প্রদত্ত ক্রিয়াকলাপের জন্য সাইটঅ্যাক্টিভিটি ডেটাতে রেকর্ডগুলি লুপ করে প্রতিটি ফর্মের জন্য প্রতিটি সারির জন্য একটি লেবেল এবং ইনপুট নিয়ন্ত্রণ যুক্ত করুন। তবে প্রচুর সমস্যা রয়েছে:

  • সত্যতা খারাপ; ক্রিয়াকলাপের সাথে সম্পর্কিত নয় এমন সাইটঅ্যাক্টিভিটি ডেটাতে এমন কোনও ক্ষেত্র স্থাপন করা সম্ভব এবং ডেটাওয়ালু একটি বার্চর ক্ষেত্র, সুতরাং সংখ্যা এবং তারিখগুলি ক্রমাগত কাস্ট করা প্রয়োজন।
  • এই ডেটাটির রিপোর্টিং এবং এড-হক জিজ্ঞাসা করা কঠিন, ত্রুটির প্রবণ এবং ধীর। উদাহরণস্বরূপ, একটি নির্দিষ্ট ব্যাপ্তির মধ্যে একটি শেষ তারিখ রয়েছে এমন একটি নির্দিষ্ট ধরণের সমস্ত ক্রিয়াকলাপের তালিকা পাওয়ার জন্য পিভট এবং কাস্টিং বার্যাচারের তারিখের প্রয়োজন। প্রতিবেদন লেখকরা এই স্কিমাকে ঘৃণা করেন, এবং আমি তাদের দোষ দিই না।

সুতরাং আমি যা খুঁজছি তা হল প্রচুর পরিমাণে ক্রিয়াকলাপের সঞ্চয় করার একটি উপায় যা প্রায় কোনও ক্ষেত্র নেই সাধারণভাবে রিপোর্ট করা সহজ করে তোলে। আমি এ পর্যন্ত যা নিয়ে এসেছি তা হল এক্সএমএল ব্যবহার করে ক্রিয়াকলাপের ডেটাটি সিউডো-নুএসকিউএল ফর্ম্যাটে সঞ্চয় করতে:

এখানে চিত্র বর্ণনা লিখুন

ক্রিয়াকলাপ সারণীতে প্রতিটি ক্রিয়াকলাপের জন্য এক্সএসডি থাকবে, যাতে ক্রিয়াকলাপ ফিল্ড সারণির প্রয়োজনীয়তা দূর হয়। সাইটের ক্রিয়াকলাপে কী-মান এক্সএমএল থাকবে তাই কোনও সাইটের প্রতিটি ক্রিয়াকলাপ এখন একক সারিতে থাকবে।

কোনও ক্রিয়াকলাপ এ জাতীয় কিছু দেখায় (তবে আমি এটি পুরোপুরি সজ্জিত করি নি):

<SomeActivityType>
  <SomeDateField type="StartDate">2000-01-01</SomeDateField>
  <AnotherDateField type="EndDate">2011-01-01</AnotherDateField>
  <EmployeeId type="ResponsiblePerson">1234</EmployeeId>
  <SomeTextField>blah blah</SomeTextField>
  ...

সুবিধাদি:

  • এক্সএসডি এক্সএমএলকে বৈধতা দেবে, ডাটাবেস স্তরে একটি নম্বর ক্ষেত্রে একটি স্ট্রিং রাখার মতো ত্রুটিগুলি ধরা, এমন কিছু যা পুরানো স্কিমা দ্বারা অসম্ভব যেটি বার্চারে সমস্ত কিছু সঞ্চিত করে।
  • ওয়েব ফর্মগুলি তৈরি করতে ব্যবহৃত কেভিপিগুলির রেকর্ডসেটটি সহজেই ব্যবহার করে পুনরুত্পাদন করা যেতে পারে select ... from ActivityXML.nodes('/SomeActivityType/*') as T(r)
  • এক্সএমএলের একটি এক্সপথ সাবকিউরি একটি ফলাফল সেট তৈরি করতে ব্যবহার করা যেতে পারে যার মধ্যে পিভট ব্যবহার না করে শুরুর তারিখ, শেষের তারিখ ইত্যাদির জন্য কলাম রয়েছে something select ActivityXML.value('.[@type=StartDate]', 'datetime') as StartDate, ActivityXML.value('.[@type=EndDate]', 'datetime') as EndDate from SiteActivity where...

এটি কি একটি ভাল ধারণা বলে মনে হচ্ছে? এত বড় সংখ্যক আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদাمانર پراলে এমন এক নম্বর সংখ্যক আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা আলাদা সংখ্যক বৈশিষ্ট্য রয়েছে I আমার আর একটি ধারণা ছিল যে বিদ্যমান স্কিমা রাখা এবং এটি একটি ডেটা গুদামে আরও সহজে জিজ্ঞাস্যযোগ্য কিছুতে অনুবাদ করা হয়েছিল, তবে আমি এর আগে কখনও স্টার স্কিমা ডিজাইন করি নি এবং কোথা থেকে শুরু করব সে সম্পর্কে আমার কোনও ধারণা নেই।

অতিরিক্ত প্রশ্ন: আমি যদি কোনও ট্যাগটি এক্সএসডি ব্যবহার করে একটি তারিখের ডেটা টাইপ হিসাবে সংজ্ঞায়িত করি xs:date, এসকিউএল সার্ভার এটির তারিখের মান হিসাবে সূচকে চলেছে? আমি উদ্বিগ্ন যদি আমি তারিখ অনুসারে জিজ্ঞাসা করি তবে এটির জন্য তারিখের স্ট্রিংটিকে একটি তারিখের মান দিতে হবে এবং কোনও সূচক ব্যবহারের কোনও সুযোগ ফুঁকতে হবে।


রিপোর্টগুলির ডেটা কতটা আপ টু ডেট হওয়া দরকার? রিপোর্টগুলি কি হিট করবে প্রোডাকশনকে?
জেমস অ্যান্ডারসন

বেশিরভাগ প্রতিবেদনগুলি এখন একটি ডেটা গুদামে আঘাত করে (এটি আসলে কোনও ডিডাব্লু নয়, এটি মূলত প্রোডাকশন লেনদেনের স্কীমার একটি অনুলিপি এবং অন্যান্য ডাটাবেসের ভিউ এবং টেবিলগুলির ক্র্যাপটনের সাথে অনুলিপি করে)। এক দিনের পুরানো তারিখের প্রতিবেদন গ্রহণযোগ্যতাযুক্ত, তবে এটি যদি লাইভ হয় তবে এটি বোনাস হবে।
পল অ্যাবট

মাঠে কত ওভারল্যাপ রয়েছে? দশটি ক্ষেত্র কি সমস্ত 100 টি সাব টাইপকে কভার করে, বা এখানে ~ 500 সম্পূর্ণ স্বতন্ত্র ক্ষেত্র রয়েছে?
সমস্ত ট্রেডের জোন

এখানে 72২ টি ক্ষেত্র এবং 75 টি ধরণের ক্রিয়াকলাপ রয়েছে। 30 টি ক্ষেত্র কেবল একটি ক্রিয়াকলাপ দ্বারা ব্যবহৃত হয়, এবং বাকী বেশিরভাগ 5-10 ক্রিয়াকলাপ দ্বারা ব্যবহৃত হয়। এখানে কয়েকটি মুখ্য ক্ষেত্র রয়েছে যা ~ 30 টি বিভিন্ন ক্রিয়াকলাপ দ্বারা ব্যবহৃত হয়। বেশিরভাগ ক্ষেত্রে, ক্রিয়াকলাপ জুড়ে সম্পূর্ণ সাধারণতা নেই।
পল অ্যাবট

উত্তর:


7

সুতরাং আমি যা খুঁজছি তা হল প্রচুর পরিমাণে ক্রিয়াকলাপের সঞ্চয় করার একটি উপায় যা প্রায় কোনও ক্ষেত্র নেই সাধারণভাবে রিপোর্ট করা সহজ করে তোলে।

প্রথমে মন্তব্য করার মতো যথেষ্ট প্রতিনিধি নেই, তাই আমরা এখানে যাই!

যদি প্রাথমিক উদ্দেশ্যটি প্রতিবেদন করা হয় এবং আপনার যদি একটি ডিডাব্লু থাকে (যদিও এটি স্টার স্কিমা নয়) আমি এটি স্টার স্কিমাতে পাওয়ার চেষ্টা করার পরামর্শ দিই। সুবিধাগুলি দ্রুত, সহজ প্রশ্নগুলি qu ডাউনসাইডটি ইটিএল, তবে আপনি ইতিমধ্যে ডেটাটিকে একটি নতুন ডিজাইনে স্থানান্তরিত করার বিষয়ে বিবেচনা করছেন এবং এক্সটিএমএল র‌্যাপার সমাধানের তুলনায় ইটিএল স্টার স্কিমাতে তৈরি করা এবং বজায় রাখা সম্ভবত সহজতর (এবং এসএসআইএস আপনার এসকিউএল সার্ভার লাইসেন্সিংয়ের অন্তর্ভুক্ত)। এছাড়াও এটি একটি স্বীকৃত প্রতিবেদন / বিশ্লেষণ ডিজাইনের প্রক্রিয়া শুরু করে।

সুতরাং এটি কীভাবে করবেন ... মনে হচ্ছে আপনার কাছে যা ফ্যাক্টলেস ফ্যাক্ট হিসাবে পরিচিত । এটি এমন কোনও গুণাবলীর ছেদ যা কোনও ইভেন্টকে কোনও সংযুক্ত পরিমাপ ছাড়াই সংজ্ঞায়িত করে (যেমন বিক্রয় মূল্য)। আপনার কিছু বা সমস্ত ক্রিয়াকলাপের জন্য আপনার কাছে খেজুর রয়েছে? সম্ভবত আপনার অবশ্যই কোনও ক্রিয়াকলাপ, সাইট এবং তারিখ (গুলি) এর ছেদ থাকা উচিত।

DimActivity- আমি অনুমান করছি একটি প্যাটার্ন রয়েছে, এমন কিছু যা আপনাকে এগুলি কমপক্ষে তুলনামূলকভাবে ভাগ করা কলামগুলিতে বিভক্ত করতে দেয়। যদি তাই হয়, আপনার তিনটি থাকতে পারে? ফাইভ? ক্রিয়াকলাপ শ্রেণীর জন্য মাত্রা। দুর্ভাগ্যক্রমে আপনার কয়েকটি ক্রিয়াকলাপ কলাম রয়েছে, যেমন ক্রিয়াকলাপের নাম, আপনি ফিল্টার করতে পারেন এবং আপনি এলোমেলো বিশদ বিবরণের জন্য সাধারণ শিরোনাম যেমন "অ্যাট্রিবিউট 1" ইত্যাদি রেখে যান।

আপনার মাত্রার সমস্ত কিছুর প্রয়োজন নেই - ক্রিয়াকলাপের মাত্রায় কোনও (তারিখের) তারিখ হওয়া উচিত নয় - সেগুলি সত্যিকারের হওয়া উচিত, তারিখের মাত্রার সাথে সারোগেট কী উল্লেখ ferences উদাহরণস্বরূপ, একটি তারিখ যা কোনও ব্যক্তির মাত্রায় থাকবে সে জন্মের তারিখ হবে কারণ এটি কোনও ব্যক্তির একটি বৈশিষ্ট্য। একটি হাসপাতালের ভিজিটের তারিখটি বাস্তবে থাকতে পারে, কারণ এটি অন্যান্য বিষয়গুলির সাথে একজন ব্যক্তির সাথে সম্পর্কিত সময়সূচী বিষয়, তবে এটি হাসপাতালে পরিদর্শনকারী ব্যক্তির কোনও বৈশিষ্ট্য নয়। আসলে আরও তারিখ আলোচনা।

DimSite- সোজা এগিয়ে দেখা যাচ্ছে, তাই আমরা এখানে সারোগেট কীগুলি বর্ণনা করব। মূলত এটি কেবল একটি ইনক্রিমেন্টিং, অনন্য আইডি। পূর্ণসংখ্যা সনাক্তকরণ কলামটি সাধারণ। এটি ডিডাব্লু এবং উত্স সিস্টেমগুলি পৃথক করার অনুমতি দেয় এবং ডেটা গুদামে সর্বোত্তম যোগদানের বিষয়টি নিশ্চিত করে। আপনার প্রাকৃতিক কী বা বিজনেস কী সাধারণত রাখা হয় তবে রক্ষণাবেক্ষণ / ডিজাইনের জন্য বিশ্লেষণ হয় না এবং যোগ দেয়। স্কিমার উদাহরণ:

CREATE TABLE [DIM].[Site]
(
 SiteSK INT NOT NULL IDENTITY PRIMARY KEY
,SiteNK INT NOT NULL --source system key
,SiteName VARCHAR(500) NOT NULL
)

DimDate- তারিখ বৈশিষ্ট্য। পরিচয়ের পরিবর্তে একটি "স্মার্ট কী" তৈরি করুন। এর অর্থ আপনি একটি অর্থপূর্ণ পূর্ণসংখ্যা টাইপ করতে পারেন যা WHERE তারিখএসকে = 20150708 এর মতো প্রশ্নের জন্য একটি তারিখের সাথে সম্পর্কিত। ( একটি বিকল্প )

DimEmployee - আপনার এক্সএমএল এটি অন্তর্ভুক্ত করেছে, যদি এটি ডিম্পারসনে আরও সাধারণ পরিবর্তন হয় এবং প্রাসঙ্গিক ব্যক্তির বৈশিষ্ট্যগুলি যেমন তা উপলব্ধ এবং প্রতিবেদনের সাথে প্রাসঙ্গিক থাকে তবে তা পূরণ করুন।

এবং আপনার সত্যটি হ'ল:

FactActivitySite
DimSiteSK - FK to DimSite
DimActivitySK - FK to DimActivity
DimEmployee - FK to DimEmployee
DimDateSK - FK to DimDate

আপনি এগুলি ফ্যাক্টে পুনর্নবীকরণ করতে পারেন এবং প্রতি ইভেন্টে আপনার একাধিক তারিখ কী থাকতে পারে। তথ্যগুলি সাধারণত খুব বড় তাই আপডেটগুলি এড়ানো সাধারণত ভাল ভাল ... যদি আপনার একক ইভেন্টে একাধিক তারিখের আপডেট থাকে তবে আপনি "আপডেট" সারি নির্বাচন করার অনুমতি দেয় এমন একটি এসকে যুক্ত করে মুছে ফেলা / সন্নিবেশ নকশার চেষ্টা করতে চাইতে পারেন সর্বশেষ ডেটা tingোকানো হলে মুছে ফেলা হবে।

আপনার ফ্যাক্ট তারিখ যাই হোক না কেন আপনি প্রয়োজন বিস্তার করুন: StartDateSK, EndDateSK, ScheduledStartDateSK

সমস্ত মাত্রার একটি হার্ডকডযুক্ত -১ এসকে সহ একটি অজানা সারি থাকা উচিত। আপনি যখন সত্যটি লোড করেন এবং কোনও ক্রিয়াকলাপের অন্তর্ভুক্ত তারিখগুলির মধ্যে কোনওটি থাকে না তখন এটি কেবল একটি -1 লোড করা উচিত।

সত্যটি হ'ল মাত্রাগুলিতে সঞ্চিত আপনার বৈশিষ্ট্যগুলির পূর্ণসংখ্যার রেফারেন্সের সংকলন, তাদের একসাথে যোগদান করুন এবং আপনি আপনার সমস্ত বিবরণ পাবেন, খুব পরিষ্কার জোড়ানোর ধাঁচে এবং এটি তথ্যের ধরণের কারণে, ব্যতিক্রমীভাবে ছোট এবং দ্রুত। যেহেতু আপনি এসকিউএল সার্ভারে রয়েছেন তাই আরও কর্মক্ষমতা বাড়ানোর জন্য একটি কলামস্টোর সূচক যুক্ত করুন । আপনি কেবল এটিটি ফেলে দিতে পারেন এবং ইটিএল চলাকালীন পুনর্নির্মাণ করতে পারেন। একবার আপনি এসকিউএল 2014+ এ গেলে আপনি কলাম স্টোর সূচিতে লিখতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি এই রুটটিতে যান তবে ডাইমেনশনাল মডেলিং research আমি কিমবল পদ্ধতিটি সুপারিশ করব । সেখানে প্রচুর ফ্রি গাইড রয়েছে, তবে এটি যদি ওয়ান অফ সলিউশন ব্যতীত অন্য কোনও কিছু হয় তবে বিনিয়োগ সম্ভবত এটির পক্ষে মূল্যবান।


(ওয়েদদেব থেকে প্রশ্ন): @ ডেভ, আপনি কোন ইআরডি সরঞ্জামটি ব্যবহার করেছেন?
ypercubeᵀᴹ

এটি মাইক্রোসফ্ট ভিজিও 2013
ডেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.