Die meisten Leute sind mit der Phrase vertraut, quotthis wird zwei Vögel mit einem Steinbruch töten. Wenn es nicht geht, bezieht sich die Phase auf einen Ansatz, der zwei Ziele in einer Handlung anspricht. (Leider ist der Ausdruck selbst ziemlich unangenehm, da die meisten von uns es nicht wollen, Steine auf unschuldige Tiere zu werfen) Heute I39m, um einige Grundlagen auf zwei großartige Features in SQL Server zu decken: den Columnstore-Index (nur in SQL Server Enterprise verfügbar) und Der SQL Query Store. Microsoft hat tatsächlich den Columnstore-Index in SQL 2012 Enterprise implementiert, obwohl sie es in den letzten beiden Releases von SQL Server erweitert haben. Microsoft hat den Query Store in SQL Server 2016 eingeführt. Also, was sind diese Features und warum sind sie wichtig Nun, ich habe eine Demo, die beide Features vorstellen und zeigen, wie sie uns helfen können. Bevor ich noch weiter gehe, decke ich auch diese (und andere SQL 2016 Features) in meinem CODE Magazin Artikel über neue Features SQL 2016. Als Grundeinführung kann der Columnstore Index dazu beitragen, Abfragen zu beschleunigen, die über große Datenmengen scanaggregieren und Der Abfrage-Store verfolgt Abfragen Ausführungen, Ausführungspläne und Laufzeitstatistiken, die Sie normalerweise manuell erfassen müssen. Vertrauen Sie mir, wenn ich sage, das sind tolle Features. Für diese Demo werde ich die Microsoft Contoso Retail Data Warehouse Demo Datenbank verwenden. Lose gesprochen, Contoso DW ist wie Quota wirklich große AdventureWorksquot, mit Tischen mit Millionen von Zeilen. (Die größte AdventureWorks-Tabelle enthält höchstens 100.000 Zeilen). Sie können die Contoso DW Datenbank hier herunterladen: microsoften-usdownloaddetails. aspxid18279. Contoso DW arbeitet sehr gut, wenn man die Leistung bei Abfragen gegen größere Tische testen möchte. Contoso DW enthält eine Standard-Data Warehouse Fact-Tabelle namens FactOnLineSales mit 12,6 Millionen Zeilen. Das ist sicherlich nicht der größte Data-Warehouse-Tisch der Welt, aber es geht auch nicht um Kinder. Angenommen, ich möchte die Produktverkäufe für 2009 zusammenfassen und die Produkte bewerten. Ich könnte die Faktentabelle abfragen und sich der Produktdimensionstabelle anschließen und eine RANK-Funktion verwenden, wie folgt: Hier ist ein Teilergebnissatz der Top 10 Zeilen, bei Total Sales. Auf meinem Laptop (i7, 16 GB RAM), nimmt die Abfrage überall von 3-4 Sekunden zu laufen. Das scheint vielleicht nicht wie das Ende der Welt zu sein, aber manche Benutzer könnten nahezu sofortige Ergebnisse erwarten (wie du bei der Verwendung von Excel gegen einen OLAP-Cube nahezu sofortige Ergebnisse sehen kannst). Der einzige Index, den ich derzeit auf dieser Tabelle habe, ist ein gruppierter Index auf einem Umsatzschlüssel. Wenn ich den Ausführungsplan betrachte, macht SQL Server einen Vorschlag, einen Deckelindex der Tabelle hinzuzufügen: Nun, nur weil SQL Server einen Index vorschlägt, bedeutet das nicht, dass du blindlings Indizes für jede quotmissing Indexquot-Nachricht erstellen solltest. In diesem Fall erkennt SQL Server jedoch, dass wir basierend auf dem Jahr filtern und den Produktschlüssel und den Verkaufsbetrag verwenden. So schlägt SQL Server einen Deckungsindex vor, mit dem DateKey als Indexschlüsselfeld. Der Grund, warum wir dies einen quotcoveringquot-Index nennen, liegt daran, dass SQL Server die Nicht-Schlüsselfelder quittiert, die wir in der Abfrage verwendet haben, für den Ridequot. Auf diese Weise muss SQL Server nicht die Tabelle oder den gruppierten Index verwenden, die Datenbank-Datenbank kann einfach den Deckungsindex für die Abfrage verwenden. Covering-Indizes sind in bestimmten Data-Warehousing und Reporting-Datenbank-Szenarien beliebt, obwohl sie zu einem Preis der Datenbank-Engine beibehalten sie kommen. Anmerkung: Die Bedeckungsindizes sind schon lange her, also habe ich noch den Columnstore-Index und den Query Store abgedeckt. Also, ich werde den Deckungsindex hinzufügen: Wenn ich die gleiche Abfrage erneut ausführen würde, lief ich vor kurzem (derjenige, der die Verkaufsmenge für jedes Produkt aggregierte), die Abfrage scheint manchmal um eine Sekunde schneller zu laufen, und ich bekomme ein Ein anderer Ausführungsplan, der einen Index-Suchvorgang anstelle eines Index-Scans verwendet (mit dem Datumsschlüssel auf dem Deckungsindex, um den Umsatz für 2009 abzurufen). Also, vor dem Columnstore Index, könnte dies eine Möglichkeit sein, diese Abfrage in viel älteren Versionen von SQL Server zu optimieren. Es läuft ein wenig schneller als das erste, und ich bekomme einen Ausführungsplan mit einem Index Seek anstelle eines Index-Scans. Allerdings gibt es einige Probleme: Die beiden Ausführungsoperatoren quotIndex Seekquot und quotHash Match (Aggregate) beide betreiben im Wesentlichen Zitat durch rowquot. Stellen Sie sich das in einem Tisch mit Hunderten von Millionen von Reihen vor. Verwandte, über den Inhalt einer Faktentabelle nachdenken: In diesem Fall kann ein einziger Datumsschlüsselwert und ein einzelner Produktschlüsselwert über Hunderte von Tausenden von Zeilen wiederholt werden (erinnern Sie sich, dass die Faktentabelle auch Schlüssel für Geographie, Promotion, Verkäufer hat , Etc.) Also, wenn die quotIndex Seekquot und quotHash Matchquot Zeile für Zeile arbeiten, tun sie dies über Werte, die möglicherweise über viele andere Zeilen wiederholt werden. Dies ist normalerweise, wo I39d zu dem SQL Server Columnstore Index, der ein Szenario bietet, um die Leistung dieser Abfrage auf erstaunliche Weise zu verbessern. Aber bevor ich das mache, gehen wir zurück in die Zeit. Let39s gehen zurück auf das Jahr 2010, als Microsoft ein Add-In für Excel als PowerPivot bekannt. Viele Leute erinnern sich wahrscheinlich daran, Demos von PowerPivot für Excel zu sehen, wo ein Benutzer Millionen von Zeilen aus einer externen Datenquelle in Excel lesen konnte. PowerPivot würde die Daten komprimieren und eine Engine zur Verfügung stellen, um Pivot-Tabellen und Pivot-Charts zu erstellen, die mit erstaunlichen Geschwindigkeiten gegen die komprimierten Daten durchgeführt wurden. PowerPivot verwendete eine In-Memory-Technologie, die Microsoft als quotVertiPaqquot bezeichnete. Diese In-Memory-Technologie in PowerPivot würde grundsätzlich doppelte Business Keyforeign Schlüsselwerte und komprimieren sie auf einen einzigen Vektor. Die In-Memory-Technologie würde diese Werte auch parallel in Blöcken von mehreren hundert zu einer Zeit scanaggregieren. Die Quintessenz ist, dass Microsoft eine große Menge an Leistungsverbesserungen in die VertiPaq In-Memory-Funktion für uns zu verwenden, direkt aus der sprichwörtlichen Box gebacken. Warum gehe ich diesen kleinen Spaziergang in die Erinnerungsspur Weil in SQL Server 2012 Microsoft eine der wichtigsten Features in der Geschichte ihrer Datenbank-Engine implementiert hat: den Columnstore-Index. Der Index ist wirklich ein Index im Namen nur: Es ist ein Weg, um eine SQL Server-Tabelle und erstellen Sie eine komprimierte, in-Memory-Spalte Store, die doppelte Fremdschlüssel Werte bis hin zu einzelnen Vektor-Werte komprimiert. Microsoft hat auch einen neuen Pufferpool erstellt, um diese komprimierten Vektorwerte parallel zu lesen und so das Potenzial für große Leistungssteigerungen zu schaffen. Also, ich werde einen Spaltenladen-Index auf dem Tisch erstellen und ich sehe, wie viel besser (und effizienter) die Abfrage läuft, im Vergleich zu der Abfrage, die gegen den Deckungsindex läuft. Also schaffe ich eine doppelte Kopie von FactOnlineSales (I39ll nennen es FactOnlineSalesDetailNCCS), und ich erstelle einen columnstore Index auf der duplizierten Tabelle, wie ich mich mit der ursprünglichen Tabelle und dem Cover-Index in irgendeiner Weise interferiere. Als nächstes erstelle ich einen columnstore-Index auf der neuen Tabelle: Notiere mehrere Dinge: I39ve spezifiziert mehrere Fremdschlüsselspalten sowie den Verkaufsbetrag. Denken Sie daran, dass ein columnstore-Index nicht wie ein traditioneller row-store-Index ist. Es gibt kein quotkeyquot. Wir geben einfach an, welche Spalten SQL Server komprimieren und in eine Spalte im Speicher speichern soll. Um die Analogie von PowerPivot für Excel zu verwenden, wenn wir einen columnstore-Index erstellen, erzählen wir SQL Server im Wesentlichen, dasselbe, was PowerPivot tat, als wir 20 Millionen Zeilen in Excel importierten, mit PowerPivot So, I39ll die Abfrage erneut ausführen, diesmal mit Die duplizierte FactOnlineSalesDetailNCCS-Tabelle, die den columnstore-Index enthält. Diese Abfrage läuft sofort in weniger als einer Sekunde. Und ich kann auch sagen, dass selbst wenn der Tisch Hunderte von Millionen von Reihen hatte, würde es immer noch auf dem sprichwörtlichen Quatschen eines Wimperns laufen. Wir könnten uns den Ausführungsplan anschauen (und in wenigen Augenblicken werden wir), aber jetzt ist es Zeit, die Query Store zu decken. Stellen Sie sich für einen Moment vor, dass wir beide Fragen über Nacht geführt haben: die Abfrage, die die reguläre FactOnlineSales-Tabelle (mit dem Cover-Index) und dann die Abfrage verwendet hat, die die doppelte Tabelle mit dem Columnstore-Index verwendet hat. Wenn wir uns am nächsten Morgen anmelden, sehen wir gern den Ausführungsplan für beide Abfragen, wie sie stattgefunden haben, sowie die Ausführungsstatistik. Mit anderen Worten, wir sehen gern die gleichen Statistiken, die wir sehen können, ob wir beide Abfragen interaktiv in SQL Management Studio geleitet haben, in TIME und IO Statistics gedreht und den Ausführungsplan direkt nach dem Ausführen der Abfrage angesehen haben. Nun, das, was der Abfrage-Shop ermöglicht es uns, können wir einschalten (aktivieren) Query Store für eine Datenbank, die SQL Server auslösen wird, um Abfrageausführung zu speichern und Planstatistiken zu speichern, damit wir sie später sehen können. Also, um den Query Store auf der Contoso-Datenbank mit dem folgenden Befehl zu aktivieren (und I39ll auch aus irgendeinem Caching herauszuholen): Dann kommst du die beiden Abfragen aus (und quotpretendquot, dass ich sie vor Stunden lief): Jetzt lassen wir sie vor, dass sie Stunden laufen ließen vor. Nach dem, was ich sagte, wird der Query Store die Ausführungsstatistiken erfassen. Also, wie sehe ich sie Glücklicherweise ist das ganz einfach. Wenn ich die Contoso DW Datenbank erweitere, sehe ich einen Query Store Ordner. Der Query Store hat enorme Funktionalität und ich versuche, viel davon in den nachfolgenden Blogeinträgen zu decken. Aber für jetzt möchte ich die Ausführungsstatistiken auf die beiden Abfragen anzeigen und die Ausführungsoperatoren für den Spaltenstartindex genau untersuchen. So klicken Sie mit der rechten Maustaste auf die Top Resource Consuming Queries und führen diese Option aus. Das gibt mir ein Diagramm wie das unten, wo ich die Ausführungsdauer (in Millisekunden) für alle abgefragten Abfragen sehen kann. In diesem Fall war Abfrage 1 die Abfrage gegen die ursprüngliche Tabelle mit dem Deckungsindex, und Query 2 war gegen die Tabelle mit dem Spaltenstartindex. Die Zahlen, die der Säulenständerindex liegen, übertrafen den ursprünglichen Tischdeckungsindex um einen Faktor von fast 7 zu 1. Ich kann die Metrik ändern, um den Speicherverbrauch zu betrachten. In diesem Fall ist zu beachten, dass die Abfrage 2 (die Spaltenstart-Indexabfrage) weit mehr Speicher verwendet hat. Dies zeigt deutlich, warum der columnstore-Index die quotin-memoryquot-Technologie darstellt. SQL Server lädt den gesamten columnstore-Index in den Speicher und verwendet einen völlig anderen Pufferpool mit erweiterten Ausführungsoperatoren, um den Index zu verarbeiten. OK, also haben wir einige Graphen, um die Ausführungsstatistiken zu sehen, können wir den Ausführungsplan (und Ausführungsoperatoren), die mit jeder Ausführung verknüpft sind, sehen. Ja, wir können Wenn Sie auf die vertikale Leiste für die Abfrage klicken, die den Spaltenladenindex verwendet hat, sehen Sie die Ausführung Plan unten Das erste, was wir sehen, ist, dass SQL Server eine Spalte Stores Index-Scan durchgeführt, und das stellte fast 100 der Kosten der Abfrage. Sie könnten sagen, quotWait eine Minute, die erste Abfrage verwendet einen Deckungsindex und führte einen Index suchen, so wie kann ein Spaltenstart-Index-Scan schneller sein. Das ist eine legitime Frage, und zum Glück gibt es eine Antwort. Sogar wenn die erste Abfrage eine Indexsuche durchgeführt hat, hat sie immer noch einen Satz durch rowquot ausgeführt. Wenn ich die Maus über den Spaltenstart-Index-Scan-Operator stecke, sehe ich eine Tooltip (wie die unten unten) mit einer wichtigen Einstellung: Der Execution Mode ist BATCH (im Gegensatz zu ROW, was wir mit der ersten Abfrage mit dem Deckungsindex). Dieser BATCH-Modus sagt uns, dass SQL Server die komprimierten Vektoren (für alle Fremdschlüsselwerte, die dupliziert werden, wie zB Produktschlüssel und Datumsschlüssel) in Chargen von fast 1.000 parallel verarbeiten. So ist SQL Server immer noch in der Lage, den columnstore Index viel effizienter zu verarbeiten. Darüber hinaus, wenn ich die Maus über die Hash Match (Aggregate) Aufgabe platziere, sehe ich auch, dass SQL Server aggregiert den columnstore Index mit Batch-Modus (obwohl der Betreiber selbst stellt so ein winziges Prozent der Kosten der Abfrage) Endlich, Sie Könnte gefragt werden, quotOK, so dass SQL Server die Werte in den Daten komprimiert, behandelt die Werte als Vektoren und liest sie in Blöcken von fast tausend Werten parallel, aber meine Abfrage wollte nur Daten für 2009. So ist SQL Server Scannen über die Ganzer Satz von Datenquot Wieder eine gute Frage. Die Antwort ist, quotNot wirklich quot. Glücklicherweise für uns, der neue columnstore Index Puffer Pool führt eine andere Funktion namens quotsegment eliminationquot. Grundsätzlich wird SQL Server die Vektorwerte für die Datumsschlüsselspalte im Spaltenstartindex untersuchen und Segmente eliminieren, die außerhalb des Geltungsbereichs des Jahres 2009 liegen. In den darauffolgenden Blogposten decken Sie den Spaltenstartindex und den Query Store detaillierter ab. Im Wesentlichen, was wir heute hier gesehen haben, ist, dass der Columnstore-Index erheblich beschleunigen kann Abfragen, die über große Datenmengen scanaggregieren, und der Query Store wird Abfrage-Ausführungen erfassen und erlauben uns, Ausführungs - und Leistungsstatistiken später zu untersuchen. Am Ende werden wir gerne eine Ergebnismenge produzieren, die folgendes zeigt. Beachten Sie drei Sachen: Die Spalten verschwinden im Wesentlichen alle möglichen Rückgabegründe, nachdem Sie den Verkaufsbetrag angelegt haben. Die Ergebnismenge enthält Zwischensummen nach Wochenende (Sonntag) Datum über alle Clients (wo der Client NULL ist) Die Ergebnismenge enthält eine Gesamtsumme Zeile (wo der Client und das Datum sind beide NULL) Erstens, bevor ich in das SQL-Ende gelangen, könnten wir die dynamische Pivotmatrix-Fähigkeit in SSRS nutzen. Wir müssten einfach die beiden Ergebnismengen um eine Spalte kombinieren und dann könnten wir die Ergebnisse der SSRS-Matrixsteuerung zuführen, die die Rückgabegründe über die Spaltenachse des Berichts verbreiten wird. Allerdings nutzt nicht jeder SSRS (obwohl die meisten Leute sollten). Aber auch damals müssen die Entwickler die Ergebnismengen in etwas anderes als ein Reporting-Tool verbrauchen. Also für dieses Beispiel gehen wir davon aus, dass wir die Ergebnismenge für eine Web-Raster-Seite generieren wollen und evtl. der Entwickler die Zwischensummen-Zeilen (wo ich einen ResultSetNum-Wert von 2 und 3 habe) ausgeben und sie in ein zusammenfassendes Raster stellen möchte. Also Grundlinie, wir müssen die Ausgabe direkt aus einer gespeicherten Prozedur generieren. Und als eine weitere Wendung nächste Woche könnte es geben Rückkehr X und Y und Z. Also wir don39t wissen, wie viele Rückkehr Gründe dort sein könnte. Wir wollen einfach die Abfrage auf die möglichen unterschiedlichen Werte für Return Reason platzieren. Hier ist, wo die T-SQL PIVOT hat eine Beschränkung müssen wir ihm die möglichen Werte. Da wir wissen, dass bis zur Laufzeit, müssen wir die Abfrage Zeichenfolge dynamisch mit dem dynamischen SQL-Muster zu generieren. Das dynamische SQL-Muster beinhaltet das Erzeugen der Syntax, Stück für Stück, das Speichern in einem String und das Ausführen des Strings am Ende. Dynamic SQL kann schwierig sein, da wir die Syntax in einen String einbetten müssen. Aber in diesem Fall ist es unsere einzige wahre Option, wenn wir eine variable Anzahl von Rückgabegründen behandeln wollen. Ich habe immer herausgefunden, dass der beste Weg, um eine dynamische SQL-Lösung zu schaffen, ist, herauszufinden, was die quittale Quotie-Abfrage am Ende sein würde (in diesem Fall angesichts der Rückkehr Gründe, die wir kennen) und dann Reverse-Engineering es durch Piecing Es zusammen ein Teil zu einer Zeit. Und so ist hier das SQL, das wir brauchen, wenn wir wüssten, dass die Rückkehrgründe (A bis D) statisch waren und sich nicht ändern würden. Die Abfrage führt die folgenden aus: Kombiniert die Daten aus SalesData mit den Daten von ReturnData, wo wir das Wort Sales als Aktionstyp aus der Verkaufstabelle quonarddraht und dann den Rückgabegrund aus den Rückgabedaten in dieselbe ActionType-Spalte verwenden. Das gibt uns eine saubere ActionType Spalte, auf der man sich drehen kann. Wir kombinieren die beiden SELECT-Anweisungen in einen gemeinsamen Tabellenausdruck (CTE), der grundsätzlich eine abgeleitete Tabellenunterabfrage ist, die wir später in der nächsten Anweisung (zu PIVOT) verwenden. Eine PIVOT-Anweisung gegen den CTE, die die Dollars für den Aktionstyp summiert In einem der möglichen Aktionstyp-Werte liegen. Beachten Sie, dass dies die endgültige Ergebnismenge ist. Wir stellen diese in einen CTE, der aus dem ersten CTE liest. Der Grund dafür ist, dass wir am Ende mehrere Gruppierungen machen wollen. Die endgültige SELECT-Anweisung, die von der PIVOTCTE liest und sie mit einer nachfolgenden Abfrage gegen dieselbe PIVOTCTE kombiniert, aber wo wir auch zwei Gruppierungen in der GROUPING SETS-Funktion in SQL 2008 implementieren: GROUPING nach dem Wochenenddatum (dbo. WeekEndingDate) GRUPPE für alle Zeilen () Also, wenn wir mit Sicherheit wüssten, dass wir niemals mehr Rückgaberecht-Codes haben, dann wäre das die Lösung. Allerdings müssen wir andere Ursachencodes berücksichtigen. Also müssen wir diese ganze Abfrage als eine große Zeichenkette generieren, wo wir die möglichen Rückkehrgründe als eine durch Kommas getrennte Liste konstruieren. I39m zeigt den gesamten T-SQL-Code zu generieren (und ausführen) die gewünschte Abfrage. Und dann brechen sie in Teile und erklären jeden Schritt. Also zuerst, hier ist der ganze Code, um dynamisch zu generieren, was ich oben bekommen habe. Es gibt grundsätzlich fünf Schritte, die wir abdecken müssen. Schritt 1 . Wir wissen, dass irgendwo in der Mischung, müssen wir einen String für diese in der Abfrage zu generieren: SalesAmount, Grund A, Grund B, Grund C, Grund D0160016001600160 Was wir tun können, ist ein temporärer gemeinsamer Tabellenausdruck gebaut, der die hart verdrahteten Quoten kombiniert Anzahl der Spalten mit der eindeutigen Liste der möglichen Ursachencodes. Sobald wir das in einem CTE haben, können wir den netten kleinen Trick von FOR XML PATH (3939) benutzen, um diese Zeilen in eine einzelne Saite zu kollabieren, ein Komma vor jeder Zeile zu setzen, die die Abfrage liest und dann STUFF verwenden, um zu ersetzen Die erste Instanz eines Kommas mit einem leeren Raum. Dies ist ein Trick, den Sie in Hunderten von SQL-Blogs finden können. Also dieser erste Teil baut einen String namens ActionString, den wir weiter unten verwenden können. Schritt 2 . Wir wissen auch, dass wir die generierten pivotierten Grundspalten, zusammen mit der Standard-Verkaufsspalte, sortieren möchten. Also brauchen wir dafür einen separaten String, den ich SUMSTRING nenne. Ich benutze einfach den originalen ActionString und schalte dann die äußeren Klammern mit SUM-Syntax und den originalen Klammern wieder auf. Schritt 3: Jetzt beginnt die eigentliche Arbeit. Wenn wir diese Originalabfrage als Modell verwenden, wollen wir die ursprüngliche Abfrage generieren (beginnend mit der UNION der beiden Tabellen), aber das Ersetzen von Referenzen auf verschwenkte Spalten mit den Strings, die wir dynamisch oben erstellt haben. Auch, während nicht unbedingt erforderlich, habe ich auch eine Variable zu einfach jedem Wagen Rücklauf Feed Kombinationen, die wir in die generierte Abfrage (für Lesbarkeit) eingebettet wollen. So konstruieren wir die gesamte Abfrage in eine Variable namens SQLPivotQuery. Schritt 4 . Wir fortsetzen, die Abfrage erneut zu konstruieren und die Syntax zu verknüpfen, die wir mit dem ActionSelectString quothard-wirequot verknüpfen können (die wir dynamisch generiert haben, um alle möglichen Rückgabewerte zu halten) Schritt 5. Schließlich werden wir den letzten Teil der Pivot-Abfrage generieren, der aus dem 2. gemeinsamen Tabellenausdruck (PIVOTCTE, aus dem obigen Modell) liest und das endgültige SELECT aus dem PIVOTCTE liest und es mit einem 2. gelesenen PIVOTCTE kombiniert Implementiere die gruppierungssätze. Schließlich können wir quotexecutequot die Zeichenfolge mit dem SQL-System gespeichert proc spexecuteSQL So hoffentlich können Sie sehen, dass der Prozess, um für diese Art von Aufwand zu bestimmen ist festzustellen, was die endgültige Abfrage wäre, basierend auf Ihrem aktuellen Satz von Daten und Werte (dh gebaut Ein Abfrage-Modell) Schreiben Sie den notwendigen T-SQL-Code, um dieses Abfrage-Modell als String zu generieren. Der wichtigste Teil ist die Bestimmung des einzigartigen Satzes von Werten, auf denen du PIVOT siehst und dann in eine Zeichenkette mit der STUFF-Funktion und dem FOR XML PATH (3939) Trick kollabst. Also, was ist mir heute gut, mindestens 13 Artikel Zwei Vor kurzem habe ich einen BDR geschrieben, der sich zum Teil auf die Rolle der Bildung und den Wert eines guten liberalen Kunsthintergrundes konzentrierte, nicht nur für die Softwareindustrie, sondern auch für andere Branchen. Einer der Themen dieses BDR betonte einen entscheidenden und erleuchteten Standpunkt des renommierten Softwarearchitekten Allen Holub in Bezug auf freie Kunst. Ill (treu) paraphrasieren seine Botschaft: er hob die Parallelen zwischen Programmierung und Studium der Geschichte, indem sie alle daran erinnern, dass die Geschichte liest und schreibt (und krank hinzufügen, identifizieren Muster), und Software-Entwicklung ist auch Lesen und Schreiben (und wieder, Identifizierung von Mustern ). Und so schrieb ich eine Meinung Stück, das auf diese und andere verwandte Themen konzentriert. Aber bis heute habe ich mich nie dazu veranlasst, es zu veröffentlichen. Jeder so oft Id denke daran, es zu überarbeiten, und Id sogar sitzen für ein paar Minuten und machen einige Anpassungen an sie. Aber dann würde das Leben im Allgemeinen in den Weg gehen und Id nie beenden. Also, was hat sich vor ein paar Wochen, Kollegen CoDe Magazine Kolumnist und Branchenführer Ted Neward schrieb ein Stück in seiner regulären Spalte, Managed Coder, die meine Aufmerksamkeit gefangen. Der Titel des Artikels ist On Liberal Arts. Und ich empfehle, dass jeder es liest. Ted diskutiert den Wert eines liberalen Kunsthintergrundes, die falsche Dichotomie zwischen einem liberalen Kunsthintergrund und Erfolg in der Softwareentwicklung und die Notwendigkeit, gut zu schreiben. Er spricht über einige seiner eigenen vergangenen Begegnungen mit HR Personalmanagement in Bezug auf seinen pädagogischen Hintergrund. Er unterstreicht auch die Notwendigkeit, sich an Veränderungen in unserer Branche anzupassen und anzupassen, sowie die Kennzeichen eines erfolgreichen Software-Profis (zuverlässig, vorausschauend und lernen, anfänglichen Konflikt mit anderen Teammitgliedern zu kommen). So ist es ein tolles Lesen, wie sind Teds andere CoDe Artikel und Blog-Einträge. Es hat mich auch dazu gebracht, über meine Ansichten zu diesem (und anderen Themen) nachzudenken und mich schließlich zu motivieren, meine eigene Redaktion zu beenden. Also, besser spät als nie, hier sind meine aktuellen Bäcker Dutzend von Reflexionen: Ich habe ein Sprichwort: Wasser friert bei 32 Grad ein. Wenn du in einer Trainingsrolle bist, kannst du dich vielleicht in der Welt alles tun, um jemanden zu helfen, der in der Tat nur eine Temperatur von 34 Grad fühlt und deshalb die Dinge für sie verfestigen. Manchmal dauert es nur ein bisschen mehr Aufwand oder einen anderen ideachemischen Katalysator oder eine neue Perspektive, die bedeutet, dass die mit vorheriger Ausbildung auf unterschiedliche Quellen zurückgreifen können. Wasser friert bei 32 Grad ein. Manche Menschen können ein hohes Maß an Konzentration auch mit einem Raum voller lärmender Menschen beibehalten. Im nicht einer von ihnen gelegentlich brauche ich etwas Privatsphäre, um durch eine kritische Frage zu denken. Manche Leute beschreiben dies, wie Sie lernen müssen, weg von ihm zu gehen. Ein anderer Weg, es ist eine Suche nach der verdünnten Luft. In der vergangenen Woche verbrachte ich stundenlang in halb beleuchtetem, ruhigem Zimmer mit einem Whiteboard, bis ich ein Problem völlig verstanden habe. Erst dann konnte ich mit anderen Entwicklern über eine Lösung sprechen. Die Botschaft hier ist nicht zu predigen, wie Sie über Ihr Geschäft der Lösung von Problemen gehen sollten, sondern für alle, ihre Stärken zu kennen und was funktioniert, und nutzen sie zu Ihrem Vorteil so viel wie möglich. Einige Phrasen sind wie Fingernägel an einer Tafel für mich. Verwenden Sie es als Unterricht Moment ist eins. (Warum ist es wie Fingernägel an einer Tafel Denn wenn du in einer Mentoring-Rolle bist, dann solltest du in der Regel den Moment-Modus unterrichten, aber subtil). Heres ein anderes kann ich nicht wirklich erklären, es in Worte, aber ich verstehe es. Das klingt ein bisschen kalt, aber wenn eine Person wirklich nicht etwas in Worte erklären kann, vielleicht versteht sie es nicht. Sicher, eine Person kann einen unscharfen Sinn haben, wie etwas funktioniert, kann ich bluffen meinen Weg durch die Beschreibung, wie eine Digitalkamera funktioniert, aber die Wahrheit ist, dass ich nicht wirklich verstehen, dass alles so gut. Es gibt ein Feld der Studie bekannt als Erkenntnistheorie (das Studium des Wissens). Eine der grundlegenden Grundlagen des Verständnisses, ob es sich um eine Kamera oder ein Designmuster handelt - ist die Fähigkeit, den Kontext zu etablieren, die Kette der verwandten Ereignisse zu identifizieren, die Attribute aller Komponenten auf dem Weg usw. Ja, das Verständnis ist manchmal sehr harte Arbeit , Aber tauchen in ein Thema und brechen es auseinander ist die Mühe wert. Sogar diejenigen, die die Zertifizierung verzichten, werden anerkennen, dass der Prozess des Studiums für Zertifizierungsprüfungen dazu beitragen wird, Lücken in Wissen zu füllen. Ein Datenbank-Manager ist eher zu einem Datenbank-Entwickler, der extemporane (und mühelos) über Transaktions-Isolation Ebenen und Auslöser sprechen können, im Gegensatz zu jemandem, der Art davon weiß, aber kämpft, um ihre Verwendung zu beschreiben. Theres ein anderes Korollar hier Ted Neward empfiehlt, dass Entwickler öffentlich sprechen, Bloggen, etc. Ich stimme zu 100. Der Prozess der öffentlichen Rede und Blogging wird Sie praktisch zwingen, darüber nachzudenken, Themen und Abbau Definitionen, die Sie sonst für selbstverständlich genommen haben könnte. Vor ein paar Jahren habe ich gedacht, dass ich die T-SQL MERGE-Anweisung ziemlich gut verstanden habe. Aber erst nach dem Schreiben darüber, sprachen, Fragen von anderen, die Perspektiven hatten, die mir nie einfallen, dass mein Verständnisgrad exponentiell zunahm. Ich kenne eine Geschichte von einem Anmelde-Manager, der einmal einen Autorenentwickler für eine Vertragsposition interviewte. Der Einstellungsleiter war verächtlich von Publikationen im Allgemeinen und bellte bei der Bewerberin an. Also, wenn du hier arbeiten wirst, würdest du lieber Bücher schreiben oder schreiben, schreibe ich ja, ich gebe es in jeder Branche ein paar reine Akademiker. Aber was der Anmelde-Manager verpasst hat, war die Chance für die Stärkung und Schärfung von Skill-Sets. Während ich ein altes Kasten Bücher brauchte, stieß ich auf einen Schatz aus den 1980er Jahren: Programmierer bei der Arbeit. Die Interviews mit einem sehr jungen Bill Gates, Ray Ozzie und anderen bekannten Namen enthält. Jedes Interview und jede Einsicht ist den Preis des Buches wert. Aus meiner Sicht war das interessanteste Interview mit Butler Lampson. Wer gab einen mächtigen Ratschlag. Zur Hölle mit Computerkenntnis. Sein absolut lächerliches. Mathematik studieren Lerne zu denken Lesen. Schreiben. Diese Dinge sind von dauerhafterem Wert. Erfahren Sie, wie die Theoreme zu beweisen: Eine Menge Beweise hat sich im Laufe der Jahrhunderte angesammelt, die darauf hindeutet, dass diese Fähigkeit auf viele andere Dinge übertragbar ist. Butler spricht die Wahrheit. Krank fügen Sie zu diesem Punkt lernen, wie man Teufel befürworten gegen sich selbst zu spielen. Je mehr Sie Realität - überprüfen Sie Ihre eigenen Prozesse und arbeiten, desto besser daneben. Der große Informatiker Allen Holub machte den Zusammenhang zwischen Software-Entwicklung und den freien Künsten speziell, dem Thema Geschichte. Hier war sein Punkt: Was ist Geschichte Lesen und Schreiben. Was ist Software-Entwicklung Unter anderem, Lesen und Schreiben. Ich habe meinen Schülern T-SQL Essay Fragen als Praxis-Tests gegeben. Ein Student scherzte, dass ich mehr wie ein Juraprofessor gehandelt habe. Nun, genau wie Coach Donny Haskins sagte in der Film Glory Road, mein Weg ist schwer. Ich glaube fest an eine starke intellektuelle Grundlage für jeden Beruf. So wie Anwendungen von Rahmenbedingungen profitieren können, können Einzelpersonen und ihre Denkprozesse auch von menschlichen Rahmenbedingungen profitieren. Das ist die Grundlagen der Stipendien. Es gibt eine Geschichte, die in den 1970er Jahren, IBM erweitert ihre Rekrutierung Bemühungen in den großen Universitäten durch die Konzentration auf die besten und hellsten liberalen Kunst Absolventen. Sogar dann erkannten sie, dass die besten Leser und Schriftsteller irgendwann zu starken Programmiersystemanalysten werden könnten. (Fühlen Sie sich frei, diese Geschichte zu jedem HR-Typ zu verwenden, der darauf besteht, dass ein Kandidat einen Informatik-Abschluss haben muss) Und von der Geschichte zu sprechen: Wenn aus keinem anderen Grund, ist es wichtig, sich an die Geschichte der Produktfreigaben zu erinnern, wenn ich bei der Arbeit arbeite Client-Site, die immer noch mit SQL Server 2008 oder sogar (Gasp) SQL Server 2005, muss ich mich erinnern, welche Features wurden in den Versionen im Laufe der Zeit implementiert. Hast du jemals einen Lieblingsarzt, den du gemocht hast, weil er die Dinge in einfachem Englisch erklärt hat, gab dir die gerade Wahrheit und verdiente dein Vertrauen, auf dich zu operieren. Das sind wahnsinnige Fähigkeiten. Und sind das Ergebnis von Erfahrung und HARTE ARBEIT, die Jahre und sogar Jahrzehnte zu kultivieren. Es gibt keine Garantien für den Job Erfolg Fokus auf die Fakten, nehmen Sie ein paar kalkulierte Risiken, wenn youre sicher, dass Sie Ihren Weg in die Ziellinie sehen können, lassen Sie die Chips fallen, wo sie können, und nie aus den Augen verlieren, nur wie der Arzt, der verdient hat Dein Vertrauen. Obwohl einige Tage ich kurz bin, versuche ich, meinen Klienten zu behandeln und ihre Daten als Arzt würden Patienten behandeln. Obwohl ein Arzt mehr Geld macht Es gibt viele Klischees, die ich verabscheue, aber Herde, die ich nicht hasse: Es gibt keine solche Sache wie eine schlechte Frage. Als ehemaliger Lehrer hörte eine Sache, die meinen Zorn zog, jemand, der eine andere Person kritisierte, um eine angeblich, dumme Frage zu stellen. Eine Frage bedeutet, dass eine Person anerkennt, dass sie eine gewisse Lücke haben, um sie zu füllen. Ja, einige Fragen sind besser formuliert als andere, und einige Fragen erfordern zusätzliche Framing, bevor sie beantwortet werden können. Aber die Reise von einer Frage zu einer Antwort ist wahrscheinlich, einen aktiven geistigen Prozess in anderen zu erzeugen. Es gibt alles gute Dinge. Viele gute und fruchtbare Diskussionen entspringen einer dummen Frage. Ich arbeite auf der ganzen Linie in SSIS, SSAS, SSRS, MDX, PPS, SharePoint, Power BI, DAX alle Werkzeuge im Microsoft BI Stack. Ich schreibe immer noch einen Code von Zeit zu Zeit. Aber erraten, was ich noch so viel Zeit damit verbringen, T-SQL-Code zu Profildaten als Teil des Entdeckungsprozesses zu schreiben. Alle Anwendungsentwickler sollten gute T-SQL-Koteletts haben. Ted Neward schreibt (richtig) über die Notwendigkeit, sich an die technologischen Veränderungen anzupassen. Krank dazu beitragen, die Notwendigkeit, sich an clientemployer Änderungen anzupassen. Unternehmen ändern Geschäftsregeln. Unternehmen erwerben andere Unternehmen (oder werden das Ziel einer Akquisition). Unternehmen machen Fehler bei der Vermittlung von Geschäftsanforderungen und Spezifikationen. Ja, wir können manchmal eine Rolle bei der Hilfe bei der Bewältigung dieser Änderungen spielen und manchmal waren die Fliege, nicht die Windschutzscheibe. Diese verursachen manchmal große Schmerzen für alle, besonders die I. T. Menschen. Darum besteht der Begriff der Tatsache des Lebens, wir müssen damit umgehen. Genau wie kein Entwickler schreibt Bug-Free-Code jedes Mal, kein I. T. Person befasst sich gut mit dem Wechsel jedes Mal. Einer der größten Kämpfe, die ich in meinen 28 Jahren in dieser Branche hatte, zeigt Geduld und Zurückhaltung, wenn Veränderungen aus vielen verschiedenen Richtungen fliegen. Hier ist, wo meine vorherige Vorschlag über die Suche nach der gereinigten Luft kann helfen. Wenn Sie es schaffen, Änderungen in Ihren Gedankenprozess zu integrieren, und ohne das Gefühl überwältigt, sind die Chancen youll ein wichtiges Kapital. In den letzten 15 Monaten musste ich mit einer riesigen Menge an professionellem Wechsel umgehen. Es war schon sehr schwierig, aber Ive beschloss, dass diese Änderung die Norm sein wird, und ich habe versucht, meine eigenen Gewohnheiten so gut wie möglich zu machen, um mit häufigen (und unsicheren) Veränderungen fertig zu werden. Es ist schwer, sehr hart Aber als Trainer Jimmy Duggan sagte in der Film Eine Liga ihrer eigenen: Natürlich ist es schwer. Wenn es nicht schwer war, würde jeder es tun. Das ist hart, was macht es toll Eine kraftvolle Botschaft. Theres wurde in den letzten Jahren über die Durchführung von Fachkonferenzen (und in der Branche als Ganzes) geführt. Viele angesehene Schriftsteller haben sehr gute Editorials zum Thema geschrieben. Heres meine Eingabe, für was seinen Wert. Its a message to those individuals who have chosen to behave badly: Dude, it shouldnt be that hard to behave like an adult. A few years ago, CoDe Magazine Chief Editor Rod Paddock made some great points in an editorial about Codes of Conduct at conferences. Its definitely unfortunate to have to remind people of what they should expect out of themselves. But the problems go deeper. A few years ago I sat on a five-person panel (3 women, 2 men) at a community event on Women in Technology. The other male stated that men succeed in this industry because the Y chromosome gives men an advantage in areas of performance. The individual who made these remarks is a highly respected technology expert, and not some bozo making dongle remarks at a conference or sponsoring a programming contest where first prize is a date with a bikini model. Our world is becoming increasingly polarized (just watch the news for five minutes), sadly with emotion often winning over reason. Even in our industry, recently I heard someone in a position of responsibility bash software tool XYZ based on a ridiculous premise and then give false praise to a competing tool. So many opinions, so many arguments, but heres the key: before taking a stand, do your homework and get the facts . Sometimes both sides are partly rightor wrong. Theres only one way to determine: get the facts. As Robert Heinlein wrote, Facts are your single clue get the facts Of course, once you get the facts, the next step is to express them in a meaningful and even compelling way. Theres nothing wrong with using some emotion in an intellectual debate but it IS wrong to replace an intellectual debate with emotion and false agenda. A while back I faced resistance to SQL Server Analysis Services from someone who claimed the tool couldnt do feature XYZ. The specifics of XYZ dont matter here. I spent about two hours that evening working up a demo to cogently demonstrate the original claim was false. In that example, it worked. I cant swear it will always work, but to me thats the only way. Im old enough to remember life at a teen in the 1970s. Back then, when a person lost hisher job, (often) it was because the person just wasnt cutting the mustard. Fast-forward to today: a sad fact of life is that even talented people are now losing their jobs because of the changing economic conditions. Theres never a full-proof method for immunity, but now more than ever its critical to provide a high level of what I call the Three Vs (value, versatility, and velocity) for your employerclients. I might not always like working weekends or very late at night to do the proverbial work of two people but then I remember there are folks out there who would give anything to be working at 1 AM at night to feed their families and pay their bills. Always be yourselfyour BEST self. Some people need inspiration from time to time. Heres mine: the great sports movie, Glory Road. If youve never watched it, and even if youre not a sports fan I can almost guarantee youll be moved like never before. And Ill close with this. If you need some major motivation, Ill refer to a story from 2006. Jason McElwain, a high school student with autism, came off the bench to score twenty points in a high school basketball game in Rochester New York. Heres a great YouTube video. His mother said it all . This is the first moment Jason has ever succeeded and is proud of himself. I look at autism as the Berlin Wall. He cracked it. To anyone who wanted to attend my session at todays SQL Saturday event in DC I apologize that the session had to be cancelled. I hate to make excuses, but a combination of getting back late from Detroit (client trip), a car thats dead (blown head gasket), and some sudden health issues with my wife have made it impossible for me to attend. Back in August, I did the same session (ColumnStore Index) for PASS as a webinar. You can go to this link to access the video (itll be streamed, as all PASS videos are streamed) The link does require that you fill out your name and email address, but thats it. And then you can watch the video. Feel free to contact me if you have questions, at kgoffkevinsgoff November 15, 2013 Getting started with Windows Azure and creating SQL Databases in the cloud can be a bit daunting, especially if youve never tried out any of Microsofts cloud offerings. Fortunately, Ive created a webcast to help people get started. This is an absolute beginners guide to creating SQL Databases under Windows Azure. It assumes zero prior knowledge of Azure. You can go to the BDBI Webcasts of this website and check out my webcast (dated 11102013). Or you can just download the webcast videos right here: here is part 1 and here is part 2. You can also download the slide deck here. November 03, 2013 Topic this week: SQL Server Snapshot Isolation Levels, added in SQL Server 2005. To this day, there are still many SQL developers, many good SQL developers who either arent aware of this feature, or havent had time to look at it. Hopefully this information will help. Companion webcast will be uploaded in the next day look for it in the BDBI Webcasts section of this blog. October 26, 2013 Im going to start a weekly post of T-SQL tips, covering many different versions of SQL Server over the years Heres a challenge many developers face. Ill whittle it down to a very simple example, but one where the pattern applies to many situations. Suppose you have a stored procedure that receives a single vendor ID and updates the freight for all orders with that vendor id. create procedure dbo. UpdateVendorOrders update Purchasing. PurchaseOrderHeader set Freight Freight 1 where VendorID VendorID Now, suppose we need to run this for a set of vendor IDs. Today we might run it for three vendors, tomorrow for five vendors, the next day for 100 vendors. We want to pass in the vendor IDs. If youve worked with SQL Server, you can probably guess where Im going with this. The big question is how do we pass a variable number of Vendor IDs Or, stated more generally, how do we pass an array, or a table of keys, to a procedure Something along the lines of exec dbo. UpdateVendorOrders SomeListOfVendors Over the years, developers have come up with different methods: Going all the way back to SQL Server 2000, developers might create a comma-separated list of vendor keys, and pass the CSV list as a varchar to the procedure. The procedure would shred the CSV varchar variable into a table variable and then join the PurchaseOrderHeader table to that table variable (to update the Freight for just those vendors in the table). I wrote about this in CoDe Magazine back in early 2005 (code-magazinearticleprint. aspxquickid0503071ampprintmodetrue. Tip 3) In SQL Server 2005, you could actually create an XML string of the vendor IDs, pass the XML string to the procedure, and then use XQUERY to shred the XML as a table variable. I also wrote about this in CoDe Magazine back in 2007 (code-magazinearticleprint. aspxquickid0703041ampprintmodetrue. Tip 12)Also, some developers will populate a temp table ahead of time, and then reference the temp table inside the procedure. All of these certainly work, and developers have had to use these techniques before because for years there was NO WAY to directly pass a table to a SQL Server stored procedure. Until SQL Server 2008 when Microsoft implemented the table type. This FINALLY allowed developers to pass an actual table of rows to a stored procedure. Now, it does require a few steps. We cant just pass any old table to a procedure. It has to be a pre-defined type (a template). So lets suppose we always want to pass a set of integer keys to different procedures. One day it might be a list of vendor keys. Next day it might be a list of customer keys. So we can create a generic table type of keys, one that can be instantiated for customer keys, vendor keys, etc. CREATE TYPE IntKeysTT AS TABLE ( IntKey int NOT NULL ) So Ive created a Table Typecalled IntKeysTT . Its defined to have one column an IntKey. Nowsuppose I want to load it with Vendors who have a Credit Rating of 1..and then take that list of Vendor keys and pass it to a procedure: DECLARE VendorList IntKeysTT INSERT INTO VendorList SELECT BusinessEntityID from Purchasing. Vendor WHERE CreditRating 1 So, I now have a table type variable not just any table variable, but a table type variable (that I populated the same way I would populate a normal table variable). Its in server memory (unless it needs to spill to tempDB) and is therefore private to the connectionprocess. OK, can I pass it to the stored procedure now Well, not yet we need to modify the procedure to receive a table type. Heres the code: create procedure dbo. UpdateVendorOrdersFromTT IntKeysTT IntKeysTT READONLY update Purchasing. PurchaseOrderHeader set Freight Freight 1 FROM Purchasing. PurchaseOrderHeader JOIN IntKeysTT TempVendorList ON PurchaseOrderHeader. VendorID Te mpVendorList. IntKey Notice how the procedure receives the IntKeysTT table type as a Table Type (again, not just a regular table, but a table type). It also receives it as a READONLY parameter. You CANNOT modify the contents of this table type inside the procedure. Usually you wont want to you simply want to read from it. Well, now you can reference the table type as a parameter and then utilize it in the JOIN statement, as you would any other table variable. Also dort hast du es A bit of work to set up the table type, but in my view, definitely worth it. Additionally, if you pass values from , youre in luck. You can pass an ADO data table (with the same tablename property as the name of the Table Type) to the procedure. For developers who have had to pass CSV lists, XML strings, etc. to a procedure in the past, this is a huge benefit. Finally I want to talk about another approach people have used over the years. SQL Server Cursors. At the risk of sounding dogmatic, I strongly advise against Cursors, unless there is just no other way. Cursors are expensive operations in the server, For instance, someone might use a cursor approach and implement the solution this way: DECLARE VendorID int DECLARE dbcursor CURSOR FASTFORWARD FOR SELECT BusinessEntityID from Purchasing. Vendor where CreditRating 1 FETCH NEXT FROM dbcursor INTO VendorID WHILE FETCHSTATUS 0 EXEC dbo. UpdateVendorOrders VendorID FETCH NEXT FROM dbcursor INTO VendorID The best thing Ill say about this is that it works. And yes, getting something to work is a milestone. But getting something to work and getting something to work acceptably are two different things. Even if this process only takes 5-10 seconds to run, in those 5-10 seconds the cursor utilizes SQL Server resources quite heavily. Thats not a good idea in a large production environment. Additionally, the more the of rows in the cursor to fetch and the more the number of executions of the procedure, the slower it will be. When I ran both processes (the cursor approach and then the table type approach) against a small sampling of vendors (5 vendors), the processing times where 260 ms and 60 ms, respectively. So the table type approach was roughly 4 times faster. But then when I ran the 2 scenarios against a much larger of vendors (84 vendors), the different was staggering 6701 ms versus 207 ms, respectively. So the table type approach was roughly 32 times faster. Again, the CURSOR approach is definitely the least attractive approach. Even in SQL Server 2005, it would have been better to create a CSV list or an XML string (providing the number of keys could be stored in a scalar variable). But now that there is a Table Type feature in SQL Server 2008, you can achieve the objective with a feature thats more closely modeled to the way developers are thinking specifically, how do we pass a table to a procedure Now we have an answer Hope you find this feature help. Feel free to post a comment. Designing a Modern Data Warehouse Data Lake Join us for a discussion of strategies and architecture options for implementing a modern data warehousing environment. We will explore advantages of augmenting an existing data warehouse investment with a data lake, and ideas for organizing the data lake for optimal data retrieval. We will also look at situations when federated queries are appropriate for employing data virtualization, and how federated queries work with SQL Server, Azure SQL DB, Azure SQL DW, Azure Data Lake, andor Azure Blob Storage. Level: This is an intermediate session suitable for attendees who are familiar with data warehousing fundamentals. Fundamentals of Designing a Data Warehouse In this session we will review sensible techniques for developing a data warehousing environment which is relevant, agile, and extensible. We will cover practical dimensional modeling fundamentals and design patterns, along with when to use techniques such as partitioning or clustered columnstore indexes in SQL Server. Well also review tips for using a database project in SQL Server Data Tools (SSDT) effectively. The session will conclude with tips for planning the future growth of your data warehouse. Level: This is an introductory session best suited to attendees who are new to data warehousing concepts. SQL Malibu User Group. San Fernando Valley, CA - Feb 15, 2017 Pearl Hacks. Chapel Hill, NC - Feb 11, 2017 (an informal workshopwhiteboarding version of this presentation) SQL Saturday BI Edition. Atlanta, GA - Dec 10, 2016 (under previous title: Good Habits of a DW Developer) Building Blocks of Cortana Intelligence Suite in Azure Join us for a practical look at the components of Cortana Intelligence Suite for information management, data storage, analytics, and visualization. Purpose, capabilities, and use cases for each component of the suite will be discussed. If you are a technology professional who is involved with delivering business intelligence, analytics, data warehousing, or big data utilizing Azure services, this technical overview will help you gain familiarity with the components of Cortana Intelligence Suite and its potential for delivering value. Level: A fast-moving introductory session Target Audience: Technology professionals seeking to gain a high level understanding of the capabilities of the Cortana Intelligence Suite Power BI: Architecture, Integration Points, Implementation Options In this session we will review Power BI implementation approaches, architecture, delivery options, authoring tools, data access methods, data refresh options, security, as well as functionality for sharing and distributing content. Components of cloud, on-premises, and hybrid approaches will be explored. We will conclude with the concept of Bimodal BI with use cases for how Power BI might be utilized for both self-service BI and certain corporate BI initiatives. Level: A fast-moving introductory session Target Audience: Technology professionals seeking to understand the system components This session has evolved and was previously known as Power BI: Architecture, Use Cases, Strengths, and Shortcomings Administering and Managing the Power BI Environment (V1 - Power BI for Office 365) Power BI for Office 365 is Microsofts new self-service BI offering. Just because it emphasizes self-service doesnt mean a system administrator isnt an important role In this session we will discuss the overall system components and how a Power BI site in SharePoint Online differs from an on-premises SharePoint BI site. We will walk through how to best handle setting up connectivity to data sources, when a gateway is needed, and what data refresh capabilities exist. We will also consider how and when to create OData feeds from your corporate on-premises data sources and how those OData feeds affect Enterprise Data Search functionality. Level: A fast-moving introductory session Power BI Architecture amp Functionality in SharePoint Online (V1 - Power BI for Office 365) Power BI for Office 365 is Microsofts new business intelligence offering which utilizes SharePoint Online and Office functionality. In this session we will discuss and demonstrate the key components of this hybrid cloud environment and what the prerequisites are for a Power BI site. Some key differences between a Power BI site in SharePoint Online versus a SharePoint BI site will be explored. We will conclude with a review of data connectivity options to be aware of. Maximizing the Data Exploration Capabilities of Power View Description: Would business users in your organization love to get their hands on an interactive, visually-oriented, data exploration tool If so, Power View may be a useful addition to your BI environment to handle certain types of self-service reporting requirements. In this session we will demonstrate the features and functionality of Power View including highlighting, cross-filtering, play axis, small multiples, tiles, cards, maps, filtering, and exporting. We will identify which situations Power View is most suited for, as well as its strengths and limitations. Capabilities in SharePoint 20102013 vs. Excel 2013 will be reviewed, as well as restrictions on types of data sources allowed. We will also discuss how to prepare a dataset in order to maximize the usability and functionality of Power View. The Lifecycle of a Reporting Services Report Description: In this session we will discuss various tips and best practices as we follow a report through its lifecycle via an end-to-end demo. Beginning with a discussion of requirements and useful templates, we will progress to a review of good report development and standardization practices, followed by suggestions for testing and validation. Next we will consider alternatives for deployment, report delivery, and handling ongoing enhancements and bug fixes. The lifecycle will wrap up with a discussion of maintenance and administration of the reporting environment. Tools and Techniques for Implementing Corporate and Self-Service BI Description: Business Intelligence requirements frequently change and having only a Corporate BI solution can result in slower delivery cycles and information backlogs. Yet the introduction of Self-Service BI introduces challenges around governance, change management, standardization, training, support, and access to unregulated data sources. In this session we will consider the benefits, obstacles, and techniques for integrating Self-Service and Corporate BI. Demonstrations of Microsoft BI tools will include Power Pivot, Power Query, Power View, Power Map, Excel, and SharePoint 2013. So You Want To Be a Rockstar Report Developer Description: You dont want to settle for being an average report developer, right In this session well walk through an end-to-end demo as we discuss various development, standardization, deployment, and documentation practices that will make your SSRS development life easier, your output of higher quality, increase maintainability, and ultimately save you time. Audience participation and sharing of experiences is encouraged as we cover choices you have for datasets, sorting, grouping, filtering, calculations, parameters, deployment, and delivery. This session focuses primarily on SQL Server Reporting Services 2012, although some concepts may apply to other BI tools as well. Managing the Power Pivot for SharePoint Environment Description: In this session we will discuss management of data models and reports stored in the Power Pivot Gallery document library. Data Refresh and security considerations will be reviewed in depth. The relational and SSAS databases present in a Power Pivot for SharePoint environment will be introduced, as well as options for reporting on usage and other key metrics. This session, which is applicable to SharePoint 2010 and 2013, will help you become prepared to tackle the support aspects of a Power Pivot for SharePoint environment. Managed Self-Service BI Traditional Business Intelligence is changing you heard about the ambitious data analyst down the hall who created a mashup of data from the internal data warehouse Excel an Azure feed Empowering knowledge workers is Microsofts vision of delivering BI for the Masses. In this session we will dismiss the hype amp examine how this new world of Managed Self-Service BI complements Corporate BI in SQL Server 2012 and SharePoint 20102013. Provide overview of each Self-Service component and expectations for its use: PowerPivot Excel Services Power View Report Builder Discuss techniques to successfully monitor, secure, amp manage the Self-Service BI environment Dashboards. How To Choose Which MSBI Tool Description: The Microsoft Business Intelligence (MSBI) stack has a few choices for visualization. We will explore options, flexibility, limitations, and ease of use for creating dashboards amp scorecards with: PerformancePoint Services 2010 Reporting Services 2008 R2 SharePoint Server 2010 PowerPivot Power View This session will be a fun one We will compare and contrast options available in each tool, such as: charts, gauges, maps, indicators, sparklines, data bars, and decomposition trees. Examine strengths of each tool related to meeting data visualization requirements Compare and contrast common visualization options available in each tool Conclude when you might choose one tool in the Microsoft BI stack versus anotherRelays - Power A relay is the generic term for a device that allows a small voltage or current to switch the power to a much larger electrical load. The most common relay is the mechanical relay . It employs a magnetic coil and contacts which physically move. When a small voltage is applied to the relays coil, it physically closes its contacts to allow the main power to pass. One advantage to a mechanical relay is the ease with which the low power signal voltage to the coil and the power for the main load itself can be completely isolated from one another. If a relay is made to switch very large loads, such as those for a motor, another term used to describe it is contactor. Solid state relays (SSRs) have no moving parts. The signal voltage switches the main load power through a semiconductor device. Since the solid state relays dont have parts that can wear, they offer a higher reliability in the long run as compared to mechanical relays, but SSRs are more susceptible to electrical inference, and on average SSRs are often limited in their power handling capabilities, as compared to mechanical relays . Power Relays, Solid State Relay, Mechanical Relay We offer a full line of high quality, name brand mechanical relays as well as solid state relays Power Relays, Solid State Relay, Mechanical Relay Copyright 1997-2017 Marlin P. Jones Assoc. Inc. - All Rights Reserved Send mail to MPJA, Inc. with questions or comments about this web site. Site Designed by NiteOwl Computing
No comments:
Post a Comment