在 Analytics Query 中使用多个分区键将数据存储在多个 Azure 存储表中
Posted
技术标签:
【中文标题】在 Analytics Query 中使用多个分区键将数据存储在多个 Azure 存储表中【英文标题】:Using Multiple Partition Keys in Analytics Query to Store data in multiple azure storage Table 【发布时间】:2016-05-26 10:03:22 【问题描述】:我有一个场景,我将两个事件数据发送到具有不同分区键/分区 ID 的事件中心。
现在在我的流分析中,我创建了两个具有相同连接字符串的输入别名(例如 machine1input 和 machine2input )和两个不同的输出别名,但这里每个输出别名都指向单独的表存储。
现在我的事件数据是这样的。
"MachineName": "M1",
"Date": "2016-05-26T13:35:30.1557995+05:30"
"MachineName": "M2",
"Date": "2016-05-26T13:35:30.1557995+05:30"
在这里,我将 MachineName-M1 发送到单独的分区,例如 1,将 MachineName-M2 发送到单独的分区,例如 2。
现在我有两个 azure 存储表,分别是 Machine1Record
和 Machine2Record
。
现在我想在流分析查询窗口中编写查询,这样机器 M1 记录应该存储在 Machine1Record
表中,机器 M2 记录应该作为数据自动存储在 Machine2Record
表中。
我已经尝试了很多查询来实现这一点。
SELECT * INTO machine1output From machine1input PARTITION BY PartitionId where PartitionId = "1"
SELECT * INTO machine2output From machine2input PARTITION BY PartitionId where PartitionId = "2"
SELECT * INTO machine1output From machine1input where MachineName = "M1"
SELECT * INTO machine2output From machine2input where MachineName = "M2"
但是它们都不起作用。请对此提供帮助。谢谢。
【问题讨论】:
【参考方案1】:如果我理解正确,您使用单个事件中心作为流分析的两个单独输入。
您可以将来自事件中心的单个输入用于流分析作业。 然后您可以从输入流创建两个输出,如下所示。
SELECT *
INTO machine1output
FROM BothMachines
PARTITION BY MachineName
WHERE MachineName = "M1"
SELECT *
INTO machine2output
FROM BothMachines
PARTITION BY MachineName
WHERE MachineName = "M2"
【讨论】:
您好,谢谢您的回复,但是我已经这样做了,但是它不起作用,因为当您在流分析查询窗口中使用我上面定义的 json 并单击测试按钮时,它不会给您任何输出。 如果您还看到此链接,则表明您必须为同一事件中心创建两个不同的输入别名才能实现此目的,但它也不起作用。social.msdn.microsoft.com/Forums/en-US/…【参考方案2】:嗨,我解决了这个问题,我在这里做的唯一错误是在 where 子句中用双引号传递 M1 和 M2。我只是删除了双引号并使用了这样的单引号 -
SELECT * INTO machine1output From machine1input where MachineName = 'M1'
SELECT * INTO machine2output From machine1input where MachineName = 'M2'
现在它运行良好..
【讨论】:
以上是关于在 Analytics Query 中使用多个分区键将数据存储在多个 Azure 存储表中的主要内容,如果未能解决你的问题,请参考以下文章
Azure Synapse Analytics监控行组跳转。
如何在 Big Query 的标准 SQL 中使用通配符为特定分区查询多个表
Oracle SQL Query,用于拆分和计算列中的值的功能?
当 Firebase Analytics 分区表中出现表时,在 Bigquery 中安排查询