IF OBJECT_ID('tempdb.dbo.#tmpTweets', 'U') IS NOT NULL
DROP TABLE #tmpTweets;
CREATE TABLE #tmpTweets
(
TweetID BIGINT,
UserID VARCHAR(60),
Text NVARCHAR(250),
TimeStamp DATETIME,
Score FLOAT,
Sentiment NVARCHAR(10)
)

DECLARE @script NVARCHAR(MAX);
SET @script = N'
import pandas as p
from twitter import Twitter, OAuth, TwitterHTTPError, TwitterStream
import datetime
from datetime import timedelta
from microsoftml import rx_featurize, get_sentiment

# Connect to Twitter
consumer_key = "eNtErYoUrTwItTeRCoNsUmErKeYhErE"
consumer_secret = "eNtErYoUrTwItTeRCoNsUmErSeCrEtHeRe"
access_key = "eNtErYoUrTwItTeRaCcEsSkEyHeRe"
access_secret = "eNtErYoUrTwItTeRaCcEsSeCrEtHeRe"
twitter = Twitter(auth = OAuth(access_key, access_secret, consumer_key, consumer_secret))

# To get tweets since the day before as this code will run once daily
since_time = datetime.datetime.utcnow()+timedelta(minutes=-1440)

# Query for recent items with the given hashtag
query = twitter.search.tweets(q = "#MachineLearning", count=1000, since=since_time.strftime("%Y-%m-%d"))
df = p.DataFrame(columns=["tweetid","userhandle","tweet"])
for result in query["statuses"]:
	dt=datetime.datetime.strptime(result["created_at"], "%a %b %d %H:%M:%S +0000 %Y").strftime("%Y-%m-%d %H:%M:%S")
	df = df.append({"tweetid":result["id"],"userhandle":result["user"]["screen_name"], "tweet": result["text"], "timestamp":dt}, ignore_index=True)

# Get the sentiment scores
sentiment_scores = rx_featurize(data=df,ml_transforms=[get_sentiment(cols=dict(scores="tweet"))])

# Translate into sentiment buckets
sentiment_scores["Sentiment"] = sentiment_scores.scores.apply(lambda score: "Positive" if score >= 0.5 else "Negative")';
INSERT INTO #tmpTweets EXECUTE sp_execute_external_script @language = N'Python',@script = @script,@output_data_1_name = N'sentiment_scores'