Topp 50 SAS intervjufrågor och svar (2026)

De viktigaste SAS-intervjufrågorna och svaren

Att förbereda sig inför en SAS-intervju kräver fokuserad förberedelse, särskilt när man förstår vad som verkligen är viktigt i en SAS-intervju. Dessa utvärderingar visar på djupgående problemlösning, analytiskt tänkande och praktisk relevans i moderna datamiljöer.

Möjligheterna i SAS-roller spänner över analys, rapportering och business intelligence, där teknisk erfarenhet och domänexpertis formar verklig effekt. Yrkesverksamma inom området förlitar sig på starka analysförmågor, en förfinad kompetens och självförtroende byggt upp genom vanliga och avancerade frågor och svar som hjälper nyutexaminerade, mellannivå- och seniorkandidater att möta olika tekniska förväntningar.
Läs mer ...

👉 Gratis PDF-nedladdning: SAS intervjufrågor och svar

De viktigaste SAS-intervjufrågorna och svaren

1) Hur bearbetar SAS ett DATA-steg internt, och vilka livscykelfaser går det igenom?

DATA-steget i SAS fungerar genom en väldefinierad livscykel som består av två huvudfaser: kompileringsfasen och exekveringsfasen. Att förstå denna livscykel är avgörande eftersom den förklarar hur SAS bygger dataset, identifierar syntax, tilldelar variabelattribut och hanterar iterationer. Under kompilering kontrollerar SAS syntax, skapar Program Data Vector (PDV) och förbereder deskriptordelen av utdatasetet. Under exekvering läser SAS data, fyller i PDV-värden, utvärderar villkor och skriver observationer till utdatasetet.

Livscykelfaser:

Fas Egenskaper Exempelvis
Sammanställning Skapar PDV, tilldelar variabellängder, identifierar saknade variabler Saknade semikolon orsakar kompileringsfel
Utförande Kör satser rad för rad, skriver utdata SET sales;
profit = revenue – cost;

Denna livscykel hjälper till att optimera felsökning och förbättra databehandlingsprestanda.


2) Vilka olika sätt finns det att kombinera datamängder i SAS, och när bör varje metod användas?

SAS erbjuder flera tekniker för att kombinera datamängder, och var och en erbjuder unika fördelar beroende på datastrukturen, förhållandet mellan datamängderna och prestandakraven. Sammanfogning, tillägg, sammanfogning, sammanflätning och SQL-kopplingar löser vart och ett olika problem. Att välja rätt metod förbättrar noggrannheten och förhindrar oavsiktliga dubbletter.

Viktiga metoder:

  • SAMMANFÖRING (DATA-steg): Används när datauppsättningar delar en gemensam BY-variabel. Lämplig för en-till-en- eller en-till-många-relationer.
  • SET (Konkatenering): Staplar datamängder vertikalt. Används när variablerna är samma men observationerna skiljer sig åt.
  • PROC SQL JOIN: Använd för full flexibilitet—vänster-, höger-, fullständiga och innerkopplingar.
  • SAMMANFLÄTTNING: Kombinerar flera datamängder samtidigt som sorteringsordningen bibehålls.

Exempelvis: Genom att slå samman försäljning och kunder efter Customer_ID kan du skapa utökade profiler för rapportering och analys.


3) Förklara skillnaden mellan SAS-format och SAS-format med exempel.

Informat och format har helt olika roller i SAS. Informat berättar för SAS hur man läser data, medan formatet anger för SAS hur man visar dataDessa egenskaper avgör om data tolkas eller helt enkelt presenteras annorlunda. Att komma ihåg denna skillnad är avgörande för att hantera datum, decimaler, monetära värden och teckenvariabler korrekt.

Jämförelsetabell:

Leverans Informatera Format
Syfte Läs externa data Visa interna data
Tillämpad Ingångssteg Slutsteg
Exempelvis input date mmddyy10.; format date date9.;

Exempelvis: Om data innehåller 20250114, informationen yymmdd8. konverterar det till ett SAS-datumvärde. Formatet date9visar det sedan som 14JAN2025Utan information skulle SAS missförstå datumet helt.


4) Vilka faktorer påverkar SAS prestanda, och hur kan man optimera ett långsamt program?

Prestanda i SAS beror på kodens effektivitet, hårdvaruresurser, datamängdstorlek och användning av index. För att optimera ett långsamt program måste du utvärdera både DATA-steg och PROC-steg. Ineffektiva kopplingar, överdriven sortering, onödiga variabler eller brist på indexering leder ofta till flaskhalsar.

Optimeringsstrategier:

  1. Gränsvariabler: Använda KEEP= or DROP= för att minska minnesanvändningen.
  2. Optimera anslutningar: Använd indexerade BY-variabler eller SQL med hashade kopplingar.
  3. Undvik onödiga sorteringar: Sortering är CPU-krävande; sortera bara när det behövs.
  4. Använd VAR istället för OM: WHERE filtrerar data tidigare i PDV-cykeln.
  5. Utnyttja hashobjekt: Effektivt för uppslagningar jämfört med MERGE.

Exempel: En datauppsättning med 10 miljoner rader kan bearbetas betydligt snabbare när den indexeras, vilket minskar sammanslagningstiden från minuter till sekunder.


5) Var ska man använda SAS WHERE-satsen istället för IF, och vilka fördelar erbjuder den?

WHERE-satsen bearbetas under datahämtning, medan IF fungerar efter att data matats in i PDV:n. Detta innebär att WHERE kan filtrera data tidigare, vilket minskar I/O och förbättrar prestandan. WHERE stöder också indexering, vilket erbjuder snabbare delmängder för stora datamängder.

Fördelar med VAR:

  • Filtrerar data innan de laddas in i PDV
  • Stöder index för snabbare val
  • Fungerar i både DATA-steg och PROC-steg
  • Hanterar SQL-liknande operatorer

Exempelvis:

set sales(where=(region='EUROPE'));

Den här versionen laddar endast europeiska poster, medan IF-versionen skulle ladda all data först och sedan filtrera, vilket slösar minne och tid.


6) Förklara olika typer av SAS-variabler, inklusive numeriska, tecken-, automatiska och temporära variabler.

SAS-variabler klassificeras baserat på deras egenskaper och hur SAS använder dem. Numeriska och teckenvariabler lagrar användardefinierad data, men SAS genererar även automatiska variabler och temporära variabler för intern bearbetning. Att förstå dessa typer säkerställer effektiv datamanipulation och gör det lättare för utvecklare att felsöka.

Typer av SAS-variabler:

  • Numerisk: Lagra reella tal; standardlängden är 8 byte.
  • Karaktär: Lagra strängar; längd definierad av användaren eller härledd.
  • Automatiska variabler: Skapad av SAS, såsom _N_ (iterationsräknare) och _ERROR_.
  • Tillfälliga variabler: Skapad med LENGTH eller RETAIN utan att skrivas till datasetet.

Exempelvis: _N_ används vanligtvis för att endast bearbeta den första observationen för uppgifter som att initiera arrayer.


7) Vad är skillnaden mellan PROC MEANS och PROC SUMMARY? Ge exempel.

Båda procedurerna beräknar beskrivande statistik, men PROC MEANS visar resultat som standard medan PROC SUMMARY kräver en explicit OUTPUT-sats. Denna skillnad i standardbeteende gör PROC SUMMARY mer lämplig för att producera datauppsättningar utan utskrift.

Jämförelse:

Leverans PROC-MEDEL PROC-SAMMANFATTNING
Produktion Utskrivet som standard Ingen utskrift
Användningsfall Snabb statistikvy Skapa sammanfattningsdatauppsättningar

Exempelvis:

  • proc means data=sales; var revenue; run; shows results immediately.
  • proc summary data=sales; var revenue; output out=summary_stats sum=Total; run; skapar endast en datauppsättning.

8) Hur fungerar SAS-index, och vilka fördelar erbjuder de för stora datamängder?

Index i SAS fungerar som indexet för en bok – de snabbar upp hämtningen genom att undvika fullständiga datauppsökningar. De lagrar ordnade pekare till observationer baserade på nyckelvariabler. Index är särskilt användbara för stora datauppsättningar och upprepade uppslagningar.

Fördelar:

  • Snabbare WHERE-bearbetning
  • Förbättrad prestanda för anslutning
  • Minskad I/O-drift
  • Förbättrade MERGE-operationer med BY-sats

Exempel: Skapa ett index på Customer_ID i en tabell med 15 miljoner rader kan SAS hämta specifika kundposter nästan omedelbart, medan de utan indexering måste läsa hela datamängden sekventiellt.


9) Erbjuder hashobjekt i SAS fördelar jämfört med traditionella MERGE-satser? Förklara med ett exempel.

Hash-objekt tillhandahåller en sökmekanism i minnet, vilket gör dem betydligt snabbare än MERGE för många-till-en-sökningar. De undviker sortering, minskar I/O och hanterar stora söktabeller effektivt. Deras livscykel existerar endast under DATA-steget, vilket gör dem idealiska för tillfälliga kopplingar.

fördelar:

  • Inget behov av att sortera data
  • Snabbare sökningar
  • Effektiv för dimensionsliknande dataset
  • Minnesbaserad, reducerande disk-I/O

Exempel: Att använda ett hashobjekt för att matcha kundmasterdata (300 000 rader) mot transaktioner (50 miljoner rader) resulterar i dramatisk prestandaförbättring jämfört med MERGE, vilket kräver sorterad data och flera överföringar.


10) Vilka olika typer av SAS-funktioner finns det, och hur används de i verkliga scenarier?

SAS erbjuder ett rikt bibliotek med funktioner kategoriserade efter syfte, såsom matematiska funktioner, teckenfunktioner, datum-/tidsfunktioner, statistiska funktioner och specialfunktioner. Dessa funktioner förbättrar databehandlingens effektivitet, noggrannhet och läsbarhet.

Nyckeltyper:

  • Karaktärsfunktioner: SCAN, UPCASE, SUBSTR för textbehandling
  • Datumfunktioner: INTNX, INTCK, MDY för datummanipulation
  • Matematiska funktioner: ROUND, SUM, ABS
  • Statistiska funktioner: MEAN, STD, VAR

Exempel: En affärsanalytiker kan beräkna kundernas ålder med hjälp av datumfunktionerna INTCK('year', BirthDate, Today()), vilket säkerställer korrekt demografisk segmentering.


11) Hur fungerar RETAIN-satsen i SAS, och vilka praktiska fördelar erbjuder den?

RETAIN-satsen instruerar SAS att inte återställa en variabels värde till saknas i början av varje DATA-stegsiteration. Normalt initierar SAS variabler till saknas under varje loop, men RETAIN bevarar den föregående iterationens värde. Denna funktion är avgörande för kumulativa beräkningar, sekventiell numrering och överföring av värden. RETAIN visas också implicit när SUM-satser används. (var + expression).

Fördelar:

  • Upprätthåller löpande totalsummor
  • Bevarar tidigare värden som inte saknas
  • Undviker onödiga tillfälliga variabler
  • Hjälper till att implementera tillbakablickningslogik

Exempelvis:

retain Total_Sales 0;
Total_Sales + Sales;

Denna kod bygger en kumulativ totalsumma över observationer utan externa loopar.


12) Vad är skillnaden mellan DATA-steget MERGE och PROC SQL JOIN i SAS? Ange scenarier där båda är att föredra.

MERGE kräver försorterade datamängder och fungerar med BY-variabler, medan SQL JOINs inte kräver sortering och kan hantera mer komplexa relationer. MERGE är effektivt för en-till-en- eller en-till-många-relationer när datamängderna är sorterade och rena. SQL JOIN är mer flexibelt och stöder inre, vänster-, höger- och fullständiga kopplingar, tillsammans med avancerade villkor, uttryck och filtrering inom själva kopplingen.

När man ska använda MERGE:

  • Data är redan sorterad
  • BY-variablerna matchar perfekt
  • Vill ha deterministiskt beteende för SAS DATA-steg

När man ska använda SQL JOIN:

  • Behöver yttre kopplingar
  • Dataset innehåller saknade eller omatchade värden
  • Komplex kopplingslogik krävs

Exempel: Att berika en försäljningsdatauppsättning med kunddemografiska detaljer använder ofta SQL för bekvämlighet och läsbarhet.


13) Vad är automatiska SAS-variabler, och hur används de? N och FEL vanligtvis används?

Automatiska variabler skapas och hanteras internt av SAS under exekvering av DATA-steg. De skrivs inte till datauppsättningar utan hjälper SAS att spåra bearbetningscykler och fel. _N_ räknar antalet iterationer av DATA-steg, vilket gör det användbart för villkorlig körning eller felsökning av specifika rader. _ERROR_ är en binär indikator som blir 1 när SAS stöter på ett exekveringsfel.

Använd fall:

  • Kör initialiseringskoden endast för den första observationen: if _N_=1 then put 'Start';
  • Registrera problematiska rader med hjälp av _ERROR_ för kvalitetskontroller.

Exempelvis: _N_ används ofta för att ladda ett hash-objekt endast en gång, vilket säkerställer optimal minnesanvändning.


14) Förklara olika typer av SAS-arrayer och hur de förenklar datatransformationer.

SAS-arrayer grupperar relaterade variabler under ett enda namn, vilket möjliggör iterativ bearbetning som minskar repetitiv kod. Arrayer skapar inte nya variabler utan tillhandahåller en strukturerad metod för att referera till befintliga. De vanligaste typerna är numeriska arrayer, teckenmatriseroch tillfälliga arrayerTillfälliga arrayer finns endast under DATA-steget och visas inte i utdatauppsättningen.

Fördelar:

  • Förenkla hanteringen av upprepade variabler (t.ex. månadsvärden)
  • Aktivera loopar för att minimera kodredundans
  • Stöd för villkorliga transformationer över grupper av variabler

Exempelvis: Att konvertera flera tentamensresultat till procentsatser kan göras med hjälp av en DO-loop över en array istället för att skriva 10 separata satser.


15) Vilka typer av saknade värden finns i SAS, och hur behandlar SAS dem under sortering och beräkningar?

SAS stöder flera typer av saknade värden: ett generiskt numeriskt saknat värde representerat som "." och speciella numeriska saknade värden som ".A" till ".Z". Alla saknade teckenvärden representeras som tomma. Dessa olika typer gör det möjligt för analytiker att koda kategorier av saknad värde, till exempel "Ej tillämpligt" eller "Vägrade att svara".

Under sortering placerar SAS alla saknade numeriska värden före eventuella faktiska tal. I beräkningar sprids saknade värden vanligtvis, vilket gör att resultat saknas om de inte hanteras explicit med funktioner som SUM() som ignorerar saknade värden.

Exempel: Vid analys av undersökningar, .A kan betyda ”Inget svar” medan .B kan betyda "Systemfel".


16) Vilka fördelar erbjuder BY-gruppbearbetning och FIRST./LAST.-variabler?

BY-group-bearbetning gör det möjligt för SAS att behandla sorterade data som grupperade segment, vilket möjliggör kraftfulla och effektiva operationer som kumulativa sammanfattningar, transformationer på gruppnivå och segmentspecifik rapportering. FIRST.variable och LAST.variable är tillfälliga indikatorer som skapas automatiskt under BY-group-bearbetning. De identifierar start- och slutobservationerna för varje grupp.

fördelar:

  • Förenklar beräkningen av grupptotaler
  • Möjliggör hierarkisk databehandling
  • Minskar manuell logik för grupper med flera rader
  • Stöder renare kod för tidsserietransformationer

Exempel Scenario: För att beräkna den totala intäkten per kund kan man ackumulera värden fram till LAST.Customer_ID utlöser en utskrivning till en sammanfattningsdatauppsättning.


17) Hur fungerar PROC TRANSPOSE, och när bör transposition föredras framför omstrukturering med arrayer?

PROC TRANSPOSE omformar data genom att rotera variabler till observationer eller vice versa. Det är idealiskt när data behöver roteras för analys, rapportering eller sammanslagning med andra system. Den främsta fördelen är automatisering – PROC TRANSPOSE hanterar dynamiska variabelantal och fungerar bra med okända eller föränderliga schemastrukturer.

Använd när:

  • Behöver konvertera bred data till långt format eller tvärtom
  • Variabla antal är stora eller oförutsägbara
  • Källdataset ändras ofta

Matriser är bättre när variabelnamn är kända och transformationslogik kan loopas effektivt.

Exempel: Konvertera kvartalsvisa försäljningsvariabler (Q1, Q2, Q3, Q4) till en vertikal struktur för tidsserieanalys.


18) Vilka är fördelarna och nackdelarna med att använda SAS-makro? Ge verkliga exempel.

SAS-makron automatiserar repetitiva uppgifter genom att generera dynamisk kod, vilket förbättrar produktivitet och konsekvens. De hjälper till att parametrisera logik, generera flera procedurer och skapa återanvändbara verktyg. Makron kan dock också medföra komplexitet och felsökningsutmaningar om de är dåligt skrivna.

För- och nackdelstabell:

Fördelar Nackdelar
Automatiserar repetitiv kod Felsökning kan vara svårt
Förbättrar underhållbarheten Kan skymma programflödet
Möjliggör dynamisk logikskapande Överanvändning gör kod oläslig
Minskar manuella fel Kräver att lära sig makrospråk

Exempelvis: Ett makro som genererar veckovisa rapporter för flera regioner med hjälp av en enda mall minskar utvecklingstiden drastiskt.


19) Kan du förklara skillnaden mellan en makrovariabel och en DATA-stegvariabel med exempel?

Makrovariabler löses upp under kompilering och fungerar som textersättningsverktyg, medan DATA-stegvariabler finns under DATA-stegskörning och innehåller faktiska datavärden. Makrovariabler kan inte interagera direkt med PDV:n om de inte uttryckligen skickas eller refereras.

Viktiga skillnader:

  • Makro: global eller lokal, utvärderas före körning
  • DATA-steg: skapas rad för rad under körning
  • Makrovariabler lagrar inte numeriska typer – de lagrar text
  • DATA-variabler kan vara numeriska eller teckenvariabler

Exempelvis:

%let threshold = 100;
if sales > &threshold then flag='High';

Här infogar makrovariabeln värdet 100, men själva jämförelsen sker vid exekveringstillfället.


20) Vilka olika typer av joins finns det i PROC SQL, och hur skiljer de sig åt i praktisk användning?

PROC SQL stöder flera kopplingstyper, inklusive inner-, vänster-, höger- och fullständiga kopplingar, som var och en löser olika databehandlingsutmaningar. Innerkopplingar bevarar matchande poster, medan yttre kopplingar bevarar icke-matchande rader från endera eller båda dataseten. FULL JOIN är särskilt kraftfull vid dataavstämning eftersom den markerar avvikelser.

Jämförelse av kopplingstyper:

Gå med Typ Egenskaper Exempel på användningsfall
INRE Endast matchande rader Kund med giltiga transaktioner
VÄNSTER Alla vänster + matchande höger Behåll alla kunder även utan köp
RÄTT Alla höger + matchande vänster Spara alla transaktioner även utan kundinformation
FULL Alla rader, matchade eller inte Datavalidering mellan system

Exempel: Granskning av försäljning mellan CRM- och faktureringssystem förlitar sig vanligtvis på FULL JOIN för att identifiera avvikelser.


21) Hur hanterar SAS konverteringar från tecken till numeriska tecken och numeriska tecken, och vilka problem uppstår vanligtvis?

SAS utför automatiskt implicita konverteringar när ett numeriskt värde används där ett tecken förväntas, eller vice versa, men detta kan leda till varningar eller felaktiga värden. Explicit konvertering med hjälp av PUT() och INPUT() erbjuder exakt kontroll och undviker tvetydighet. Konvertering från tecken till numerisk kräver ett informat, medan konvertering från numerisk till tecken kräver ett format.

Vanliga problem inkluderar felaktiga längder, felaktiga uppgifter och ogiltiga data som genererar saknade värden. Implicit konvertering genererar alltid en ANTECKNING i loggen, vilket signalerar potentiella problem med datakvaliteten.

Exempelvis:

  • Konvertera tecken → numerisk: num = input(char_date, yymmdd8.);
  • Konvertera numerisk → tecken: char = put(amount, dollar12.2);

22) Vilken roll spelar Program Data Vector (PDV) i SAS-bearbetning, och hur kan förståelse av den förbättra programdesignen?

PDV är en minnesområdesstruktur som SAS använder för att bygga observationer under exekvering av DATA-steg. Den lagrar variabelvärden, automatiska variabler och temporära variabler för varje iteration. PDV återställs i början av varje loop om inte variabler behålls genom mekanismer som RETAIN- eller SUM-satser.

Att förstå PDV-beteendet klargör varför saknade värden uppstår, hur arrayer fungerar och hur FIRST./LAST.-logiken utlöses. Det hjälper också till med prestandajustering eftersom utvecklare kan förutsäga minnesanvändning och undvika onödigt skapande av variabler.

Exempel: Oavsiktlig kvarhållning av variabelvärden uppstår ofta vid användning av SUM-satser, där SAS implicit tillämpar RETAIN.


23) Vilka typer av SAS-index finns, och hur bör man välja mellan enkla och sammansatta index?

SAS-stöd enkel och komposit index. Ett enkelt index skapas på en enda variabel, medan ett sammansatt index kombinerar två eller flera variabler. Indexvalet beror på frågemönster: om de flesta frågor använder en enda nyckel som Customer_IDräcker ett enkelt index. Om frågor vanligtvis filtrerar på flera variabler, t.ex. State och Category, då förbättrar ett sammansatt index prestandan.

Jämförelsetabell:

Indextyp Egenskaper Bästa användningsfallet
Enkelt En variabel Unika identifierarsökningar
Komposit Flera variabler Flera villkor WHERE-filter

Exempel: Ett sammansatt index på (Region, Product) snabbar upp produktanalyser över regioner.


24) Förklara fördelarna med att använda PROC FORMAT, och hur användardefinierade format förbättrar tolkningsbarheten.

PROC FORMAT låter utvecklare tilldela meningsfulla etiketter till kodade värden, vilket förbättrar läsbarheten i rapporter, konsekvensen mellan procedurer och kontrollen över datatolkning. Användardefinierade format fungerar som uppslagstabeller och kan minska behovet av kopplingar eller CASE-logik. Format kan återanvändas mellan dataset och procedurer, vilket förbättrar underhållsvänligheten.

Exempelvis:

Skapa ett format för 1=Male och 2=Female låter PROC FREQ eller PROC REPORT automatiskt visa beskrivande etiketter. På liknande sätt kan inkomstintervall delas in med hjälp av anpassade värdeformat för segmenteringsanalys.

Den främsta fördelen är att den underliggande informationen förblir oförändrad medan den visade informationen blir mer tolkbar.


25) Hur fungerar PROC SORT internt, och vilka alternativ hjälper till att optimera sortering av stora datamängder?

PROC SORT omorganiserar observationer baserat på en eller flera variabler; det kan dock vara resurskrävande, särskilt för stora datamängder. Internt skapar SAS tillfälliga verktygsfiler, sammanfogar sorterade block och skriver resultatet till utdatadatasetet.

Prestandan kan förbättras genom att:

  • Använda SORTEDBY= för metadataoptimering
  • Tillämpa NODUPKEY or NODUPREC för att effektivt ta bort dubbletter
  • Sortera endast nödvändiga variabler med hjälp av KEEP= or DROP=
  • Använda index istället för fysiska sorteringar för vissa operationer

Exempel: Sortering av 50 miljoner rader blir snabbare när man bara läser 3 obligatoriska variabler istället för alla 100 fält i datamängden.


26) Varför är LENGTH-satsen viktig i SAS, och hur påverkar felaktig längdtilldelning data?

LENGTH-satsen bestämmer lagringsstorleken för teckenvariabler och påverkar minnesanvändning, trunkeringsrisk och resultatnoggrannhet. SAS standardiserar teckenlängder baserat på den första tilldelningen som påträffas, vilket kan orsaka trunkering om längre värden visas senare. Explicita LENGTH-satser förhindrar detta problem och säkerställer konsekvens mellan DATA-steg.

Felaktiga längder kan leda till avkortade strängar, felklassificerade kategorier eller oväntade resultat i kopplingar på grund av att nycklar inte matchar.

Exempel: Inställning length ProductName $50; säkerställer att fullständiga namn lagras även om det första värdet i datasetet är kortare.


27) Vad är syftet med SAS-kompilatordirektiv som %PUT, %EVAL och %SYSFUNC i makrobearbetning?

Kompilatordirektiv, även kallade makrofunktioner, förbättrar makrobearbetning genom att möjliggöra utvärdering, loggning och funktionsanrop under kompileringstiden. %PUT skriver meddelanden till loggen för felsökning, %EVAL utför heltalsaritmetik på makrovariabler, och %SYSFUNC anropar DATA-stegfunktioner inom makrokod.

Dessa verktyg förbättrar dynamiska programmeringsmöjligheter genom att tillåta att manipulera makrovariabler mer exakt.

Exempelvis:

%let today = %sysfunc(today(), date9.);
%put Current Date: &today;

Detta genererar ett formaterat datum vid makrokompileringstillfället.


28) Hur hanterar SAS fel, varningar och anteckningar, och varför är loggövervakning avgörande?

SAS-loggar klassificerar problem i tre kategorier: fel, varningar och anteckningar. Fel förhindrar programkörning eller skapande av dataset, varningar indikerar potentiella problem och anteckningar ger informationsmeddelanden inklusive implicita konverteringar och oinitierade variabler. Loggövervakning säkerställer datanoggrannhet, förhindrar tysta fel och identifierar prestandaflaskhalsar.

Att ignorera loggar kan orsaka obemärkta fel, såsom ogiltig datahantering, avkortade variabler eller oavsiktliga sammanslagningar.

Exempel: En OBS om att ”Teckenvärden har konverterats till numeriska värden” signalerar en implicit konvertering som kan introducera saknade värden.


29) Vilka tekniker kan du använda för att validera datakvaliteten i SAS före analys eller rapportering?

Datavalidering i SAS bygger på statistiska kontroller, strukturella kontroller och affärsregelkontroller. Tekniker inkluderar användning av PROC FREQ för att upptäcka oväntade kategorier, PROC MEANS för extremvärden, PROC COMPARE för avstämning av dataset och PROC SQL-valideringsfrågor. Anpassad validering med IF-THEN-logik, FIRST./LAST.-kontroller eller hash-sökningar säkerställer djupare regelutvärdering.

Vanliga tekniker:

  • Intervallkontroller med IF-villkor
  • Dubblettdetektering med PROC SORT + NODUPKEY
  • Mönster för saknade värden med PROC FREQ
  • Validering av korstabeller med PROC TABULATE

Exempel: Att använda PROC COMPARE för att validera migrerade data mellan system säkerställer strukturell och värdemässig konsistens.


30) När bör man använda SAS ODS (Output Delivery System), och vilka fördelar ger det för rapportering?

ODS styr formateringen av utdata, vilket gör att SAS-procedurer kan producera resultat i HTML, PDF, Excel, RTF och andra format. Det separerar datagenerering från presentation och erbjuder funktioner för stilisering, mallar och routning av utdata. Analytiker förlitar sig på ODS för anpassningsbara, professionellt utseende rapporter.

fördelar:

  • Stöder flera utdataformat
  • Möjliggör formaterade tabeller, grafer och mallar
  • Tillåter insamling av utdatauppsättningar med ODS OUTPUT
  • Förbättrar automatiseringen för återkommande rapporter

Exempel: Generera automatiserade veckovisa prestandadashboards i Excel via ODS Excel effektiviserar rapporteringsarbetsflöden.


31) Hur fungerar INFILE-satsen i SAS, och vilka alternativ hjälper till att styra läsning av råfiler?

INFILE-satsen anger för SAS hur externa rådatafiler ska läsas. Den fungerar tillsammans med INPUT-satsen för att mappa text med fast, avgränsad eller blandat format till strukturerade dataset. INFILE-alternativ ger detaljerad kontroll över postlängd, hantering av avgränsare, saknade data och linjepekare.

Användbara alternativ inkluderar DLM= för anpassade avgränsare, MISSÖVER för att förhindra att SAS läser bortom tillgängliga fält, FÖRSTAOBS= för att ange startlinjen, LRECL= för långa register, och BAGAGERASKYDD för rader med variabel längd. Dessa alternativ säkerställer konsekvent datainmatning även från dåligt formaterade filer.

Exempelvis:

infile "sales.txt" dlm="," missover dsd lrecl=300;

Den här konfigurationen skyddar mot saknade efterföljande fält och värden i citattecken.


32) Vilka olika typer av SAS-bibliotek finns det, och hur används de i företagsmiljöer?

SAS-bibliotek fungerar som pekare till lagringsplatser där datamängder, kataloger och andra SAS-filer finns. Bibliotek kan vara tillfälliga eller permanenta, och valet beror på persistensbehov och plattformsarkitektur.

Typer av bibliotek:

  • WORK-biblioteket: Tillfällig lagring som försvinner vid sessionens slut.
  • Permanenta bibliotek: Skapad med LIBNAME som pekar på diskplatser eller databaser.
  • Motorbaserade bibliotek: Såsom V9, BASE, SPDE och databasmotorer (t.ex. ORACLE, TERADATA).
  • Metadatabibliotek: Används i SAS Enterprise Guide- och SAS Studio-miljöer för kontrollerad åtkomst.

Exempel: I stora organisationer pekar LIBNAME-anslutningar ofta direkt till säkra Oracle eller Hadoop-tabeller, vilket möjliggör sömlös analys utan dataduplicering.


33) Vad är syftet med funktionen COMPRESS och alternativet COMPRESS= dataset, och hur skiljer de sig åt?

Även om de delar ett namn, tjänar funktionen COMPRESS och alternativet COMPRESS= dataset olika syften. KOMPRIMÉRA-funktionen tar bort angivna tecken från strängar, vilket underlättar datarensning eller standardisering. Däremot COMPRESS= datauppsättningsalternativ minskar den fysiska datamängdens storlek genom att tillämpa RLE (Run Length Encoding) eller RDC-komprimeringsalgoritmer på lagrade observationer.

Jämförelsetabell:

Leverans KOMPRIMERINGSfunktion KOMPRIMERA= Alternativ
Syfte Ta bort tecken från texten Minska filstorleken
Omfattning Variabel nivå Datasetnivå
Exempelvis name_clean = compress(name,,'kd'); set data(compress=yes);

Exempel: Komprimering av en datauppsättning med 50 miljoner rader kan minska lagringsutrymmet med 60 %, vilket förbättrar I/O-prestandan.


34) Hur felsöker man SAS-program effektivt, och vilka funktioner hjälper till att identifiera problem?

Effektiv felsökning i SAS kräver systematisk användning av loggmeddelanden, PUT-satser, ODS TRACE och diagnostiska alternativ. Loggen ger ledtrådar via ERROR-, WARNING- och NOTE-meddelanden, och identifierar syntaxproblem, oinitierade variabler eller typavvikelser. PUTLOG-satsen möjliggör anpassad felsökningsutdata, vilket hjälper till att spåra variabelvärden under körning.

Ytterligare tekniker inkluderar användning av OPTIONS MPRINT, SYMBOLGENoch MLOGIC för makrofelsökning och användning PROC CONTENTS för att inspektera datasetattribut. För felsökning av DATA-steget, den interaktiva DATA-stegsfelsökare möjliggör steg-för-steg-körning, brytpunkter och variabelbevakning.

Exempel: Aktivering av MPRINT hjälper till att bekräfta om den makrogenererade SQL-koden är korrekt.


35) Vad är skillnaden mellan PROC REPORT och PROC TABULATE, och när ska var och en användas?

PROC REPORT erbjuder mångsidig anpassad rapportering med radvis kontroll, vilket möjliggör kolumner på detaljnivå, sammanfattningsnivå och beräknade kolumner. PROC TABULATE producerar flerdimensionella korsrapportsammanfattningar med fokus på presentationsorienterade tabeller. Att förstå dessa egenskaper hjälper analytiker att välja det mest läsbara och effektiva formatet.

Jämförelse:

Leverans PROC-RAPPORT PROC-TABULERING
kontroll Hög kontroll över radlogik Hög kontroll över strukturerade tabeller
Produktion Text- eller formaterade rapporter Korsflikmatriser
Användningsfall Anpassade KPI-instrumentpaneler Flerdimensionella sammanfattningar

Exempel: En finansiell instrumentpanel som kräver villkorsstyrd formatering hör hemma i PROC REPORT, medan en 3D-sammanfattning av försäljning per region, kvartal och segment passar i PROC TABULATE.


36) Vilken betydelse har CLASS- och BY-satserna i SAS-procedurer, och hur skiljer de sig åt?

Både CLASS och BY skapar analyser på gruppnivå men beter sig olika. CLASS kräver inte försorterade data och används inom procedurer som PROC MEANS, PROC SUMMARY och PROC TABULATE för att generera statistik utifrån kategoriska variabler. BY kräver sorterade data och producerar separata procedurkörningar för varje BY-grupp, vilket erbjuder mer proceduroberoende och separata ODS-utdatablock.

Viktiga skillnader:

  • KLASS: Ingen sortering krävs, effektivare vid aggregering.
  • BY: Sortering krävs, producerar oberoende utdata.

Exempel: För att beräkna separata regressionsmodeller per region är BY-bearbetning att föredra. För att sammanfatta försäljning per region i en enda tabell är CLASS lämplig.


37) Hur hanterar SAS datum och tider internt, och varför är det viktigt att förstå denna lagringsstruktur?

SAS lagrar datum som antalet dagar sedan den 1 januari 1960 och datum- och tidsvärden som antalet sekunder sedan det datumet. Tidsvärden representerar sekunder från midnatt. Dessa numeriska representationer möjliggör matematisk manipulation, till exempel att lägga till dagar eller beräkna varaktigheter.

Att förstå denna struktur är avgörande för korrekt rapportering, för att förhindra fel som inte överlappar varandra och för att säkerställa korrekt användning av format och informat. Datumberäkning utan korrekta format förvirrar ofta nybörjare eftersom råa numeriska värden visas istället för läsbara datum.

Exempelvis:

difference = intck('day', StartDate, EndDate);

Denna beräkning fungerar eftersom båda datumen delar en konsekvent numerisk bas.


38) Vilka fördelar ger SAS-makrofunktioner som %SCAN, %SUBSTR och %UPCASE vid kodgenerering?

Makrofunktioner erbjuder manipulation på textnivå under kompileringstiden, vilket möjliggör dynamisk konstruktion av variabelnamn, datamängdsnamn och villkorliga kodsegment. %SCAN extraherar ord från makrovariabler, %SUBSTR segmenterar textsegment och %UPCASE säkerställer enhetlig versaler för jämförelser.

Dessa funktioner förbättrar generaliseringen genom att tillåta makron att anpassa sig till användardefinierade parametrar. Till exempel generering av månatliga dataset med hjälp av %substr(&date,1,6) tillåter automatisk namngivning av tabeller.

Exempelvis:

%let region = north america;
%put %upcase(&region);

Detta producerar NORDAMERIKA, vilket säkerställer konsekvent matchning i makrologiken.


39) Vilka faktorer bör man beakta när man väljer mellan SAS-datauppsättningar och externa databaser för lagring?

Valet mellan SAS-datauppsättningar och externa databaser beror på datavolym, samtidighetskrav, säkerhetskontroller och integrationsbehov. SAS-datauppsättningar ger snabb sekventiell åtkomst och är idealiska för analytiska arbetsflöden men saknar samtidighet med flera användare och robusta transaktionskontroller. Externa databaser som Oracle, Teradata och SQL Server erbjuder indexering, ACID-efterlevnad, skalbarhet och kontrollerad åtkomst.

Faktorer inkluderar:

  • Datastorlek och förväntad tillväxt
  • Fråga samtidigt
  • Säkerhet och användarbehörigheter
  • Integration med företagssystem
  • Kostnad och administrativa omkostnader

Exempel: Ett data science-team som analyserar 5 miljoner rader dagligen kan föredra SAS-datauppsättningar, medan ett företags-CRM med 1 miljard poster kräver en databas.


40) Hur bestämmer SAS variabellängd och typ under kompileringsfasen, och vilka problem uppstår på grund av inkonsekventa källor?

Under kompileringen inspekterar SAS den första förekomsten av varje variabel för att tilldela typ och längd. För teckenvariabler används som standardlängd det längsta värdet som tilldelats under den första instansen. När variabler förekommer i flera SET- eller MERGE-datauppsättningar orsakar inkonsekventa längder trunkering och varningar. Numeriska variabler får alltid 8 byte om de inte uttryckligen tilldelats.

Problem som inkonsekventa teckenlängder leder till felaktiga nycklar och felaktiga sammanslagningar. Utvecklare använder ofta LENGTH-satser före SET-satser för att upprätthålla konsekvens.

Exempelvis:

length ID $15;
set data1 data2;

Detta säkerställer att ID förblir enhetligt över båda ingångarna.


41) Vad är syftet med OUTPUT-satsen i SAS, och hur kan den styra skapandet av dataset?

OUTPUT-satsen anger explicit för SAS när det aktuella innehållet i Program Data Vector (PDV) ska skrivas till en eller flera datauppsättningar. Utan OUTPUT skriver SAS automatiskt en observation per DATA-stegsiteration. Genom att använda OUTPUT avsiktligt kan du generera flera observationer från en iteration, skriva selektiva observationer eller dirigera utdata till olika datauppsättningar baserat på villkor.

Exempelvis:

data high low;
  set sales;
  if revenue > 10000 then output high;
  else output low;
run;

Detta skapar två datamängder från ett enda DATA-steg. Att förstå OUTPUT är avgörande för avancerad datamanipulation, till exempel att utöka poster eller skriva flera sammanfattningar.


42) Hur hjälper PROC COMPARE till med validering av datamängder, och vilka alternativ förbättrar jämförelsens noggrannhet?

PROC COMPARE utvärderar två datamängder och belyser skillnader i struktur, metadata och faktiska datavärden. Det används ofta för migreringsvalidering, ETL-kvalitetskontroller och regressionstestning i analyspipelines. Viktiga alternativ som KRITERIUM=, LISTA ALLT, MAXUTSKRIFT=och UTDIF hjälpa till att producera mer detaljerade rapporter och kontrollera toleransnivåer för numeriska avvikelser.

Den här proceduren identifierar felaktigt matchande variabeltyper, oväntade saknade värden, skillnader på radnivå och strukturella problem.

Exempel: Vid migrering från Oracle Till SAS säkerställer PROC COMPARE att den resulterande SAS-datauppsättningen matchar källan utan tysta trunkerings- eller avrundningsfel.


43) Vilken betydelse har RETAIN-satsen i kombination med FIRST./LAST.-logiken?

Att använda RETAIN tillsammans med FIRST./LAST. möjliggör kraftfulla beräkningar på gruppnivå, särskilt för kumulativa totaler, löpande skillnader och kategoriska flaggor. FIRST.variabel indikerar början av en BY-grupp, så RETAIN hjälper till att återställa eller ackumulera värden på lämpligt sätt.

Illustrativt exempel:

by Customer_ID
if first.Customer_ID then Total=0;
Total + Amount;
if last.Customer_ID then output;

Denna logik aggregerar totalsummor på kundnivå utan att kräva PROC SUMMARY. Den visar vikten av RETAIN för att bevara värden över rader inom en grupp samtidigt som man återställer för varje ny grupp. Att förstå detta mönster är avgörande för effektiv sammanfattning av DATA-steg.


44) Vad skiljer PROC FREQ från PROC SUMMARY för kategorisk analys?

PROC FREQ skapar frekvenstabeller, korstabeller och associationstester som chi-kvadrat, vilket gör det idealiskt för kategoriska fördelningar och kontingentanalys. PROC SUMMARY beräknar numerisk statistik över kontinuerliga eller diskreta grupper men genererar inte inherent frekvensräkningar om inte annat anges.

Jämförelsetabell:

Leverans PROC-FREKVENS PROC-SAMMANFATTNING
Produktion Frekvenstabeller Sammanfattande statistik
perfekt för Antal, procentandelar, associationer Medelvärden, summor, intervall
Statistiska tester Chi-kvadrat, Fishers exakta Ingen som standard

Exempel: För att utvärdera kunddemografi (kön, region) är PROC FREQ överlägset. För att beräkna genomsnittlig intäkt per segment är PROC SUMMARY lämplig.


45) Hur hjälper FIRSTOBS- och OBS-alternativen till att kontrollera provextraktion?

FIRSTOBS och OBS är datamängdsalternativ som begränsar vilken del av datamängden som ska läsas. FIRSTOBS anger den första observationen som ska läsas, medan OBS anger den sista. Dessa alternativ är användbara för sampling, felsökning och prestandatestning eftersom de minskar bearbetningstiden under utveckling.

Exempelvis:

set bigdata(firstobs=1 obs=1000);

Detta extraherar endast de första 1000 raderna, vilket gör att koden körs snabbt under testcykler. Värdena ändrar inte själva datamängden och gäller endast under DATA-steget eller procedurkörningen. Dessa alternativ ökar effektiviteten vid arbete med mycket stora datamängder.


46) Vad är fördelen med att använda PROC FORMAT med CNTLIN och CNTLOUT, och hur stöder det dynamiska format?

CNTLIN låter dig skapa format från en datamängd, vilket möjliggör dynamiska, datadrivna märkningssystem. CNTLOUT extraherar befintliga format till datamängder, vilket möjliggör modifieringar, granskningar eller versionshantering av format. Denna funktion är värdefull när formatvärden ändras ofta eller styrs av affärsregler som lagras i databastabeller.

Exempel: En bank kan ha en datauppsättning som hanterar riskkoder och deras beskrivande betydelser. Med hjälp av CNTLIN genererar SAS automatiskt format utan att manuellt skriva värdeutdrag. Denna metod centraliserar formateringslogiken och förenklar underhållet i stora rapporteringssystem.


47) Vad skiljer SUM-satsen från SUM()-funktionen i SAS, och när är varje funktionen att föredra?

SUM-satsen (x + y;) behåller implicit variabeln och behandlar saknade värden som noll, vilket gör den idealisk för löpande totaler. Funktionen SUM() (x = sum(a,b,c);) utvärderar endast argument inom den aktuella iterationen och ignorerar saknade värden utan att behålla resultaten.

Jämförelse:

Aspect SUM-uttryck SUM()-funktionen
Retentionstid Ja Nej
Värden saknas Behandlas som noll Ignoreras
Användningsfall Kumulativa totalsummor Summor på radnivå

Exempelvis: total + amount; ackumuleras över observationer, medan sum(amount1, amount2) beräknar endast summor inom samma rad.


48) Vad är syftet med alternativet END= dataset, och hur hjälper det till att detektera den sista raden i en dataset?

Alternativet END= dataset tilldelar en temporär variabel som sätts till 1 när SAS läser den senaste observationen av en dataset. Detta är extremt användbart vid initialisering eller sammanfattningsuppgifter, till exempel vid skrivning av sammanfattningsposter, stängning av filer eller slutförande av hashobjektutdata.

Exempelvis:

set sales end=last;
if last then put "Dataset processing complete.";

Denna logik säkerställer att vissa åtgärder endast sker en gång efter alla iterationer. END= är särskilt användbart vid generering av programmatiska rapporter och vid byggande av kumulativa sammanfattningsdatauppsättningar.


49) Vilka är de största fördelarna och nackdelarna med att använda SPDE (Scalable Performance Data Engine) i SAS?

SPDE-motorn förbättrar prestandan för stora datamiljöer med flera trådar. Den distribuerar data över lagringsenheter och utför parallella läsningar och skrivningar. Den är lämplig för analyser med hög genomströmning och tunga ETL-arbetsbelastningar.

Fördelar kontra nackdelar:

Fördelar Nackdelar
Parallell I/O för snabbare prestanda Kräver miljö med flera diskar
Effektiv för stora datamängder Komplex konfiguration
Stöder partitionering och indexering Inte idealisk för små datamängder

Exempel: Att bearbeta 300 miljoner poster med SPDE kan minska körtiden drastiskt, särskilt på system med flera processorer och diskar.


50) Hur hanterar PROC SQL delfrågor, och vilka fördelar erbjuder de inom SAS-programmering?

PROC SQL stöder korrelerade och icke-korrelerade delfrågor, vilket möjliggör djupare filtrering, villkorliga uppslagningar och dynamiska beräkningar. Delfrågor gör det möjligt för SQL att beräkna värden i realtid, matcha filtrerade delmängder eller utföra villkorliga kopplingar utan mellanliggande datauppsättningar.

Exempelvis:

select * from sales
where revenue > (select avg(revenue) from sales);

Detta identifierar högpresterande poster. Delfrågor minskar behovet av tillfälliga datamängder, förbättrar läsbarheten och möjliggör mer komplex logik i en enda SELECT-sats. De är särskilt fördelaktiga vid metadatafrågor och analytisk filtrering.

🔍 De viktigaste intervjufrågorna för SAS med verkliga scenarier och strategiska svar

1) Vad är skillnaden mellan ett DATA-steg och ett PROC-steg i SAS?

Förväntat från kandidaten: Intervjuaren vill bedöma din förståelse av SAS grunder och hur du bearbetar och analyserar data.

Exempel på svar:

"DATA-steget används för att läsa, manipulera och skapa datamängder, medan PROC-steget används för att analysera data eller generera rapporter. DATA-steget fokuserar på dataförberedelse, och PROC-stegen tillämpar statistiska eller analytiska procedurer."


2) Hur hanterar man saknade värden i SAS?

Förväntat från kandidaten: Intervjuaren vill veta din strategi för datakvalitet och fullständighet.

Exempel på svar:

”Jag hanterar saknade värden genom att först identifiera dem via PROC MEANS eller PROC FREQ. Sedan avgör jag om jag ska imputera, ta bort eller behandla dem som en separat kategori baserat på analysens sammanhang och effekten på modellen.”


3) Kan du förklara syftet med MERGE-satsen i SAS?

Förväntat från kandidaten: Intervjuaren vill veta om du förstår datasammanfogning och relationella koncept.

Exempel på svar:

"MERGE-satsen används för att kombinera datauppsättningar baserat på en gemensam variabel. Den låter dig sammanfoga datauppsättningar horisontellt och kräver att datauppsättningarna sorteras efter variabeln BY."


4) Beskriv ett utmanande SAS-projekt du arbetade med och hur du hanterade det.

Förväntat från kandidaten: Utvärdering av problemlösning, initiativförmåga och förmåga att leverera resultat.

Exempelsvar (använder obligatorisk fras #1):

”I min tidigare roll arbetade jag med ett komplext dataintegrationsprojekt som involverade flera inkonsekventa datakällor. Jag skapade anpassade valideringsregler, standardiserade format och automatiserade kvalitetskontroller med hjälp av SAS-makron. Detta säkerställde korrekt rapportering och minskad handläggningstid.”


5) Hur optimerar man SAS-kod för bättre prestanda?

Förväntat från kandidaten: Förståelse för effektivitet, optimering och bästa praxis inom SAS.

Exempel på svar:

”Jag optimerar SAS-kod genom att minimera användningen av onödiga variabler, använda WHERE istället för IF vid delmängder, indexera stora datamängder och undvika upprepade beräkningar via makrovariabler. Jag granskar även loggar för att eliminera ineffektivitet.”


6) Berätta om en gång när du var tvungen att samarbeta med ett team för att lösa ett SAS-relaterat problem.

Förväntat från kandidaten: Teamwork, kommunikations- och konfliktlösningsförmåga.

Exempelsvar (använder obligatorisk fras #2):

”I en tidigare position samarbetade jag med datateknikteamet för att lösa inkonsekvenser i rapporteringsutdata. Jag ledde diskussioner för att förstå dataflödet, validerade datamängder med hjälp av PROC COMPARE och dokumenterade en gemensam process för framtida bruk.”


7) Hur säkerställer ni noggrannheten och integriteten hos era SAS-datautdata?

Förväntat från kandidaten: Noggrannhet, kvalitetssäkring och verifieringsmetoder.

Exempel på svar:

”Jag säkerställer noggrannhet genom att utföra datavalideringskontroller, använda PROC CONTENTS för att verifiera variabelegenskaper och dubbelkolla resultat med oberoende frågor. Jag upprätthåller även processer för kollegial granskning av kritiska rapporter.”


8) Beskriv en situation där deadlines var snäva men SAS-analysen var komplex. Hur hanterade du det?

Förväntat från kandidaten: Tidshantering, prioritering och lugn under press.

Exempelsvar (använder obligatorisk fras #3):

”På mitt tidigare jobb var jag tvungen att leverera en detaljerad statistisk rapport inom en mycket snäv tidsram. Jag prioriterade viktiga analyser först, automatiserade repetitiva uppgifter med SAS-makron och kommunicerade statusuppdateringar ofta för att hantera förväntningarna.”


9) Hur använder man SAS-makron, och vilka fördelar ger de?

Förväntat från kandidaten: Kunskap om automatisering, skalbarhet och effektiv kodning.

Exempel på svar:

”Jag använder SAS-makron för att automatisera repetitiva uppgifter, minska kodningsfel och förbättra återanvändbarheten av kod. De hjälper till att upprätthålla konsekvens i stora projekt och förenkla parameterdrivna analyser.”


10) Förklara ett verkligt scenario där du förbättrade en process med hjälp av SAS.

Förväntat från kandidaten: Praktisk tillämpning, effektivitetsförbättringar och affärspåverkan.

Exempelsvar (använder obligatorisk fras #4):

”I min senaste roll automatiserade jag ett månatligt rapporteringsflöde som hade skapats manuellt. Med hjälp av PROC SQL och SAS-makron minskade jag bearbetningstiden från flera timmar till minuter, vilket avsevärt förbättrade teamets produktivitet.”

Sammanfatta detta inlägg med: